2

私は新しい Rails 開発者で、レガシー Rails アプリに取り組んでいます。rake db:create コマンドを実行すると、データベースを作成できないというエラーが表示されます。これに関連する多くの StackOverflow の質問を見つけましたが、ソリューションのほぼすべての順列のトラブルシューティングで、問題を解決できませんでした。

3 つのデータベース (dev、prod、test) を作成し、これらのデータベースへのすべてのアクセス権限を持つユーザーを作成して、rake db:create.

Mac OS X Lion、MySQL 5.5.28、Rails 2.3.5、Ruby 1.8.7 を実行しています。ここに私の設定があります

development:
  adapter: mysql
  encoding: utf8
  database: adva_development
  username: adva
  password: ****
  host: localhost
  socket: /tmp/mysql.sock

エラーは次のとおりです。

Couldn't create database for {"adapter"=>"mysql", "username"=>"adva", "host"=>"localhost", "encoding"=>"utf8", "database"=>"adva_development", "socket"=>"/tmp/mysql.sock", "password"=>"****"}, charset: utf8, collation: utf8_unicode_ci (if you set the charset manually, make sure you have a matching collation)

次のトラブルシューティングを行いました。

  1. 確認済みのユーザーとパスワードが正しく、ユーザーは DB にアクセスできます。([ユーザー] でユーザー アクセスを再確認すると、SELECT * FROM mysql.db WHERE Db = 'adva_development' \G; すべての権限が付与されます。)

  2. ソケットが正しいことを確認します。ソケットについてはよくわかりませんが、/tmp/mysql.sock ではっきりと確認できます。

  3. 照合順序と文字セットを確認しました。ラテン文字セットと照合順序で DB を作成したことがわかったので、それらを再作成しました。私は実行show variables like "collation_database";してshow variables like "character_set_database";、それぞれ utf8 と utf8_unicode_ci で戻ってきました。

  4. この質問の指示に従いました。mysql gem をアンインストールした後、次のコマンドを実行しましたが、同じエラーが発生しました。

    gem install --no-rdoc --no-ri mysql -- --with-mysql-dir=/usr/local/mysql-5.5.28-osx10.6-x86_64/bin --with-mysql-config=/usr/local/mysql-5.5.28-osx10.6-x86_64/bin/mysql_config 
    
  5. Matt の提案に従って、次のことがrake --trace db:create明らかになります。

    ** Invoke db:create (first_time)
    ** Invoke db:load_config (first_time)
    ** Invoke rails_env (first_time)
    ** Execute rails_env
    ** Execute db:load_config
    ** Execute db:create
    Couldn't create database for {"database"=>"adva_development", "adapter"=>"mysql", "host"=>"127.0.0.1", "password"=>"woof2adva", "username"=>"adva", "encoding"=>"utf8"}, charset: utf8, collation: utf8_unicode_ci (if you set the charset manually, make sure you have a matching collation)
    

3 日と 6 ~ 7 時間後、ほとんど選択肢がなくなりました。localhost を 127.0.0.1 に置き換えて無駄にするなど、さまざまなランダムなことを試しました。

私の特定の環境に関連して何か問題があるのでしょうか? Mac OS X ライオン + MySQL 5.5.28? Linux環境ですべてをセットアップしようと計画しています。

ありがとう!

4

3 に答える 3

0

localhost をローカル ソケットの代わりに TCP/IP を使用するように変更し127.0.0.1、削除してみてください。socket

または、データベース サーバーが Rails と同じソケットを使用しているかどうかを確認してください。

mysqladmin variables | grep socket

これで問題が解決しない場合は、純粋な Ruby を使用してデータベース サーバーに接続し、新しいデータベースを作成してみてください。

require 'rubygems'
require 'mysql'

begin
  db = Mysql.new('localhost', 'root', 'yourpassword')
  db.query('create database sample_database;');
rescue Mysql::Error => e
  puts e
ensure
  db.close unless db.nil?
end

これが実行されるかどうかを確認します。mysql gem がインストールされている必要があります ( gem install mysql)

于 2012-11-11T22:36:32.133 に答える
0

mysql gemのより新しいバージョンを実行していることを確認してください。バージョンでこの問題に遭遇しました2.8。アップグレードし2.9て問題を修正しました。

于 2013-05-08T16:31:40.363 に答える