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

时间:2010-04-20 05:26:16

标签: ruby-on-rails ruby rake

我正试图让我的第一个“hello world”rails示例在我的OSX 10.6.3框中使用rails getting started guide

当我去执行第一个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. 验证用户和密码是否正确(我在开发箱上运行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>创建数据库blog_development; 查询正常,1行受影响(0.00秒)

  4. 为了确保这不是一个字符集问题我也尝试过:

    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但没有效果。

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

6 个答案:

答案 0 :(得分:5)

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

@tim在我继续下一步然后起身后,我在控制台上出错了,所以我做了一些搜索,发现了这个helpful thread

卸载我的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并继续。

谢谢!

答案 1 :(得分:2)

可能有很多事情。

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

除此之外,我不确定。

答案 2 :(得分:1)

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

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

create database foobar CHARACTER SET utf8 COLLATE utf8_general_ci

答案 3 :(得分:0)

blog_development数据库是否已存在?

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

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

如果没有错误,那么您应该能够导航到localhost:3000并从此处继续教程http://guides.rubyonrails.org/getting_started.html#hello-rails

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

sudo apt-get install mysql-server mysql-client

然后需要安装一些库以使MySQL可用于ruby:

sudo apt-get install libmysql-ruby

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