アップデート:実際には自分自身でmySQLベースのアプリケーションを使用していても、まだソケットエラーが発生する -レールでソケット経由でアクセスすると、私のレールが壊れてしまうのはなぜですか?
Mysql2 ::エラー:ソケット '/ opt/local/var/run/mysql5/mysqld.sock '(2)
だから、私のmysqlは台無しにならなければなりませんが、修正方法はわかりません。私はmysqlを通してそれを完全にOKにすることができ、私は自分のデータベースを使用し、mysqlプロンプトでテーブルから選択することができます。
しかし、レールアプリまたはレールコンソール私はちょうど働くことができません。
私はmysqlとpostgresの両方のデータベースにアクセスしようとしていますが、私がmysqlにアクセスしようとすると私はpostgresの情報を取得します! 注:私は 'to' postgresに移動しようとしています。私はそれが「マスター」(カウントした場合)とmysqlを古いデータのソースとみなします(読み込み専用)。
具体的には、各データベースにusersテーブルがあります。 私は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の中に、ユーザテーブルとユーザモデルを持っている:
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 NOT mysqlからのものです。私は、異なるユーザーテーブルの列名が全く違っていて、私が予想していた464の代わりに5つのレコードしかないことを知ることができます。
私はそれが可能でなければならないと確信していますが、私は間違った名前空間を持っていますが、私が試したすべての組み合わせはこれまで働いていません。
私はMysqlUser :: OldAppに「Oldapp」にdirectorty名とモデル名を変更しようとしたが、私はそれを行うときにOldappを試してみてください::私は
Mysql::Error: Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock' (2)
from /Users/michaeldurrant/.rvm/gems/[email protected]_Abroad101/gems/activerecord-3.1.3/lib/active_record/connection_adapters/mysql_adapter.rb:931:in `real_connect'
非常に明白なことかもしれません。しかし、database.ymlファイルを変更した後にサーバーを再起動しましたか? –
警告のため... Mysql :: User == User。 Mysqlディレクトリと名前空間を別の名前に変更しようとしました – Fivell
こんにちはPhyo、良い提案。私がやっていることは、コンソールを使ってリロードしていることです!環境をリロードするたびに私はそれが何を言うと、環境をリロードするので、すべての変更を適用すると信じて –