Обновление: На самом деле, когда у меня просто есть приложение на базе MySQL, я все равно получаю ошибку сокета -
Mysql2 :: Ошибка: невозможно подключиться к локальному серверу MySQL через сокет '/opt/local/var/run/mysql5/mysqld.sock' (2)
Так что мой mysql должен быть испорчен, но я не знаю, как это исправить. Я могу войти в него полностью нормально через mysql, и я могу «использовать» свою базу данных и выбирать из таблиц в приглашении mysql.
Но приложение rails или консоль rails Я просто не могу работать.
Я пытаюсь получить доступ к базам данных mysql и postgres, но когда я пытаюсь получить доступ к mysql, я получаю информацию postgres!
Примечание: я пытаюсь перейти на postgres «в», и я считаю, что это «master» (если он имеет значение), а mysql - источник старых данных, к которым я пытаюсь получить (только для чтения).
В частности, у меня есть таблица пользователей в каждой базе данных.
В моем файле database.yml есть следующее:
common: &common
adapter: postgresql
encoding: unicode
host: localhost
encoding: UTF8
username: my_user_name
development:
<<: *common
database: newapp_development
pool: 5
mysql_development:
adapter: mysql
encoding: utf8
username: my_user_name
database: oldapp_development
У меня есть пользовательская таблица в postgres и модель User:
class User < ActiveRecord::Base
end
У меня есть таблица пользователей в mysql и Модель пользователя, которую я поместил в подкаталог models / Mysql.
Он по-прежнему называется user.rb, но его содержимое:
class Mysql::User < ActiveRecord::Base
establish_connection "mysql_development"
end
Однако, когда я захожу в консоль и выполняю Mysql :: User.all, я получаю:
`[1] pry(main)> Mysql::User.all
(pry):1: warning: toplevel constant User referenced by Mysql::User
User Load (2.6ms) SELECT "users".* FROM "users"`
НО ...
возвращенные данные от postgres НЕ mysql. Я могу сказать, что имена столбцов в разных пользовательских таблицах совершенно разные, и вместо 464 я ожидал только 5 записей.
Я уверен, что это возможно, но у меня просто неправильное пространство имен или что-то в этом роде, но каждая комбинация, которую я пробовал, до сих пор не работала.
Я попытался изменить имя директории на 'Oldapp', а имя модели на OldApp :: MysqlUser, но когда я это сделал и попробовал Oldapp :: MysqlUser.all, я получил
Mysql::Error: Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock' (2)
from /Users/michaeldurrant/.rvm/gems/ruby-1.9.2-p290@ruby1.9.2_Abroad101/gems/activerecord-3.1.3/lib/active_record/connection_adapters/mysql_adapter.rb:931:in `real_connect'