无法rake db:create:all - 无法为{“encoding”=>“utf8”,“username”=>“root”,“adapter”=>“mysql”创建数据库

时间:2011-04-07 04:13:04

标签: mysql ruby-on-rails ruby

我正在尝试在我的计算机上启动并运行rails应用程序,并且我在创建数据库时遇到问题。我已正确安装/设置rails,mysql并安装了mysql 2.8.1 gem(我用gem list验证了这一点)。

所以现在,我正在尝试运行'rake db:create:all',我收到以下错误:

  

无法为其创建数据库   { “编码”=> “中UTF8”,   “用户名”=> “中根”,   “adapter”=>“mysql”,“database”=>“pyo”,   “host”=>“localhost”,“password”=> nil,   “socket”=>“/ tmp / mysql.sock”},charset:   utf8,整理:utf8_unicode_ci(如果   你手动设置charset,make   确定你有匹配的排序规则)

     

无法为其创建数据库   { “编码”=> “中UTF8”,   “用户名”=> “中根”,   “适配器”=> “中的MySQL”,   “数据库”=> “中pyo_test”,   “host”=>“localhost”,“password”=> nil,   “socket”=>“/ tmp / mysql.sock”},charset:   utf8,整理:utf8_unicode_ci(如果   你手动设置charset,make   确定你有匹配的排序规则)

我目前在Snow Leopard上运行5.5.10 MySQL社区服务器(GPL)(10.6.6)

这是我的database.yml文件中的内容

development:
  adapter: mysql
  encoding: utf8
  database: pyo
  username: root
  password:
  socket: /tmp/mysql.sock
  host: localhost

test:
  adapter: mysql
  encoding: utf8
  database: pyo_test
  username: root
  password:
  socket: /tmp/mysql.sock
  host: localhost

我注意到错误的结尾如何“charset:utf8,collat​​ion:utf8_unicode_ci(如果你手动设置字符集,请确保你有匹配的排序规则)” - 这是问题吗?如果是这样,我该如何解决?

我已经被困在这件事上好几个小时了,找不到任何对谷歌有帮助的东西。所以在这一点上任何帮助都会非常感激。

谢谢!

5 个答案:

答案 0 :(得分:2)

认为我有类似的东西...通过将其添加到database.yml:

来修复
host: 127.0.0.1

或者在您的情况下,将其从localhost更改。

答案 1 :(得分:2)

我遇到了与mysql2 gem相同的问题。然后我发现我的MySQL只在'localhost'中侦听而不是'127.0.0.1',所以我将它改为'localhost',现在我不再讨论这个问题了。现在一切都有效。

答案 2 :(得分:2)

我知道这个帖子已经老了,但是作为一个IT人员,他相信在一个地方保持良好的可靠文档:

问题实际上源于您的" config / database.yml"文件。您将ROR指向MySQL Socket的错误位置。

我遇到了这个问题,原来是宝石是在mac系统上构建的,并且开发人员没有考虑其他操作系统,只需将他的" mysql.sock"文件在" / tmp"目录而不是" /var/run/mysqld/mysqld.sock"

所以他的" database.yml"文件看起来像:

development: adapter: mysql2 #encoding: utf8 database: somedatabase pool: 5 username: someusername password: somepassword socket: /tmp/mysql.sock

因为我在Ubuntu系统上,所以我必须将我的内容改为:

development: adapter: mysql2 #encoding: utf8 database: somedatabase pool: 5 username: someusername password: somepassword socket: /var/run/mysqld/mysqld.sock

是的,错误可能会产生误导,但它与您的"编码"无关。或者你是使用localhost还是127.0.0.1 (至少在linux / UNIX系统中这些转换为同一个东西并且是同义词)

开始编辑

如上所述将编码注释掉也不好。所以我在这里提供修改以供参考。

development: adapter: mysql2 encoding: utf8 database: somedatabase pool: 5 username: someusername password: somepassword socket: /var/run/mysqld/mysqld.sock

结束编辑

答案 3 :(得分:0)

所以,经过大约3到4天的谷歌搜索并尝试了很多不同的东西,我偶然发现了这个:

http://geryit.com/blog/2011/01/installing-mysql-with-rails-on-mac-os-x-snow-leopard/

猜猜是什么?有用!完美。这让我相信问题出在MySQL 5.5.10中。关于它的一些东西不仅仅适用于我的ruby / rails环境。但是,一旦我按照上面链接上的说明(包括卸载mysql并重新安装5.1),我的应用程序现在可以在我的本地计算机上完美运行。

希望这有助于某人!

答案 4 :(得分:0)

我想分享我的解决方案。 我有我的database.yml如下

default: &default
  adapter: mysql2
  encoding: utf8
  username: root
  password: 
  host: 127.0.0.1
  port: 3306

development:
  <<: *default
  database: dev.database

我的错误在于这一行

database: dev.database

所以,我写的没有(。)

database: devdatabase