使用rake db:create创建Rails DB时出错

Sim*_*mon 3 ruby rake ruby-on-rails

我试图让我的第一个"hello world"rails示例在我的OSX 10.6.3框中使用rails的入门指南.

当我去执行第一个rake db:create命令(我正在使用mysql)时,我得到:

simon@/Users/simon/source/rails/blog/config: rake db:create  (in /Users/simon/source/rails/blog) Couldn't create database for {"reconnect"=>false, "encoding"=>"utf8", "username"=>"root", "adapter"=>"mysql", "database"=>"blog_development", "pool"=>5, "password"=>nil, "socket"=>"/opt/local/var/run/mysql5/mysqld.sock"}, charset: utf8, collation: utf8_unicode_ci (if you set the charset manually, make sure you have a matching collation)
Run Code Online (Sandbox Code Playgroud)

我找到了大量的stackoverflow问题,通过以下建议解决了这个问题:

  1. 验证用户和密码是否正确(我在我的开发箱上运行w/root没有密码)

  2. 验证套接字是否正确 - 我可以捕获套接字,所以我认为它是正确的

  3. 验证用户是否可以创建数据库(如您所见,root可以连接并创建此数据库没问题)

    simon @/Users/simon/source/rails/blog/config:mysql -uroot -hlocalhost欢迎使用MySQL监视器.命令以;结尾; 或\ g.您的MySQL连接ID是16服务器版本:5.1.45源分发

    输入'help;' 或'\ h'寻求帮助.输入'\ c'清除当前输入语句.

    mysql> create database blog_development; 查询正常,1行受影响(0.00秒)

为了确保这不是一个charset问题我也尝试过:

mysql> create database foobar CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

注意:这是我的database.yaml:

development:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: blog_development
  pool: 5
  username: root
  password:
  socket: /opt/local/var/run/mysql5/mysqld.sock
#  host: localhost
Run Code Online (Sandbox Code Playgroud)

请注意,我尝试将套接字切换到localhost但没有任何效果.

关于这里可能会发生什么的任何想法?

Sim*_*mon 5

感谢所有帮助人员.看起来问题与我在OSX下安装mysql gem有关.

@tim进入下一步并起身后,我在控制台上出错了,所以我做了一些搜索,找到了这个有用的线程.

在我卸载了我的ruby gem之后,我gem uninstall mysql使用这个命令(来自线程)安装了正确的mysql gem:

export ARCHFLAGS="-arch i386 -arch x86_64" ; gem install --no-rdoc --no-ri mysql -- --with-mysql-dir=/opt/local/lib/mysql5 --with-mysql-config=/opt/local/lib/mysql5/bin/mysql_config

执行完这个后,我能够成功运行rake db:create并继续.

谢谢!!