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

我试图让我的第一个“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) 

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

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

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

  3. validation用户是否可以创建数据库(如您所见,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) 

注意:这是我的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 

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

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

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

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

卸载我的ruby gems gem uninstall mysql我使用此命令安装了正确的mysql gems(来自线程):

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并继续。

谢谢!!

这可能是一些事情。

  • 您的数据库是否设置为utf8字符集?
  • 套接字的路径是否正确,因为它与OS不同。
  • 你重新安装了mysql gem吗? sudo gem install mysql
  • 它可能是MySQL,您可能希望将版本降级到5.0

除此之外,我不确定。

你应该在这里发布你的database.yml

为了使您的测试更好,我会尝试创建一个数据库UTF-8,以查看您的数据库是否支持utf-8

 create database foobar CHARACTER SET utf8 COLLATE utf8_general_ci 

blog_development数据库是否已经存在?

如果是这样,您可以继续下一步。

尝试在blog/目录中运行ruby script/server

如果它没有出错,那么你应该能够导航到localhost:3000并从这里继续教程http://guides.rubyonrails.org/getting_started.html#hello-rails 。

如果ruby script/server出错,请给我留言。

我只是有同样的问题:它是一个老的mysql gem,它不是最新的。 重新安装mysql gem就可以了。

使用以下命令重新安装mysql-server和mysql-client:

 sudo apt-get install mysql-server mysql-client 

然后你需要安装一些库来使Ruby可用于ruby:

 sudo apt-get install libmysql-ruby 

这一切都解决了我的问题。 试试吧 !!! 🙂