2016-04-20 1 views
-1

MySQLとRuby on Rail間の接続に問題があります。database.ymlファイルを使用してMySQLをRuby上でレールに接続する方法は?

私はMySQLでデータベースを持っており、Ruby on RailでActiveRecordに移行する必要があります。これを行うには、私はこのように、レールのプロジェクトに私のルビーにdatabase.ymlのファイルを変更する必要があります。

# SQLite version 3.x 
# gem install sqlite3 
# 
# Ensure the SQLite 3 gem is defined in your Gemfile 
# gem 'sqlite3' 
# 
default: &default 
    adapter: sqlite3 
    pool: 5 
    timeout: 5000 

development: 
    adapter: mysql2 
    database: ******** 
    username: ****** 
    password: ****** 
    host: ******* 

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
test: 
    <<: *default 
    database: db/test.sqlite3 

production: 
    <<: *default 
    database: db/production.sqlite3 

はもちろん、*文字が、私は表示する必要が無関心な情報ですが、それが適切に構築されています、通常どおり接続が確立されます。

Ruby on Railsコンソールに問題があります。移行が正常に実行されず、移行する必要がある表に関係なく、すべてのIDがNULLです。例えば、私はテーブルからこれを取る:

ID_NILL

すべてのIDをIので、任意のテーブルでは、nullで、私は、例えば、私はデータベースに導入された最後のユーザーを一覧表示することができませんIDで注文する必要があります。 Gemfileでは、私は宝石mysql2を持っています。

私は間違っていますか?

+0

これは既に存在するデータベースですか? – Matt

+0

あなたの接続設定が 'nil' IDの問題とは関係ないと思います。あなたのモデルはどのように見えますか?スキーマはどうですか?あなたがそれらを使用していない場合は、デフォルトを削除する必要があります。 – tadman

+0

私の情報は役に立ちましたか? –

答えて

1

まず、gemをインストールする必要があります。私の場合には、最新の宝石をインストールし、私は

gem 'mysql2','~> 0.3.20' 


は、その後、あなたが次に使用してデータベースを作成するには、この

# SQLite version 3.x 
# gem install sqlite3 
# 
# Ensure the SQLite 3 gem is defined in your Gemfile 
# gem 'sqlite3' 
# 
default: &default 
    adapter: mysql2 
    pool: 5 
    timeout: 5000 
    username: username 
    password: password 

development: 
    <<: *default 
    database: database/development 

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
test: 
    <<: *default 
    database: test/development 

production: 
    <<: *default 
    database: db/production 


のようなあなたのdatabase.ymlファイルを設定する必要があり、最新バージョン

に与えています rake db:または rails db:createを作成し、データベースを開発とテストの両方で使用できます。

0

最後に、私はmysqlからActiveRecordsに正しく移行できます。ありがとうございます。両方のdatabase.ymlとの接続が適切に構築されていれば、問題はmysqlのデータベースから発生しています。

完全なデータベースがありますが、サブクエリを使用してテーブルのみを移行する必要があります。問題は、テーブルがプライマリキーまたは外部キーを適切に継承しないということです。ユーザーからのショーの列、最初のデータベースから:これは、テーブル、ユーザからの問合せの聖霊降臨祭のcolumsと画像、ある

:subquerysは直接、私はどのようにお見せ

Correct Table from Users

アンこの、あります新しいユーザテーブルから取得され、最初のユーザtaに対してサブクエリから直接生成されたイメージBLE:

Incorrect Table from Users

あなたは、私が作成し、サブクエリ、参照のみすべてのatributesの種類と制限を継承しますが、解決のためにそれをより多くの何も

を継承しないドント、代わりに使用することができたよう外部キーを尊重して新しいテーブルを作成し、INSERT INTO clausuleを使用して新しい行を追加します。

ありがとうございます。

+0

あなたの問題が解決したら、少なくとも私のポイントを与えることによって私の答えを修正してください –

関連する問題