我是一名新的 Rails 开发人员,我正在开发旧版 Rails 应用程序。每当我运行 rake db:create 命令时,都会收到无法创建数据库的错误消息。我发现了许多与此相关的 StackOverflow 问题,但在对几乎所有解决方案排列进行故障排除时,我无法解决该问题。
我创建了三个数据库(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)
我已经完成了以下故障排除:
验证用户和密码正确,用户可以访问数据库。(双重检查用户访问权限,
SELECT * FROM mysql.db WHERE Db = 'adva_development' \G;
用户拥有所有权限。)验证套接字是否正确。我不太了解套接字,但我可以在 /tmp/mysql.sock 中清楚地看到它。
检查排序规则和字符集。我发现我已经用拉丁字符集和排序规则创建了数据库,所以我重新创建了它们。我跑了
show variables like "collation_database";
,show variables like "character_set_database";
然后分别带着 utf8 和 utf8_unicode_ci 回来了。我按照这个问题中的说明进行操作。卸载 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
按照 Matt 的建议,以下是 a 所
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)
三天零六七个小时后,我几乎没有选择。我尝试了各种随机的东西,比如用 127.0.0.1 替换 localhost 无济于事。
我的特定环境可能有问题吗?Mac OS X Lion + MySQL 5.5.28?我计划尝试在 Linux 环境中设置所有内容。
谢谢!