![](/img/trans.png)
[英]rake db:create error with mysql2 gem (Couldn't create database for {“adapter”=>“mysql2”)
[英]Cannot rake db:create:all — Couldn't create database for {“encoding”=>“utf8”, “username”=>“root”, “adapter”=>“mysql”
我正试图在我的计算机上运行一个rails应用程序,我在创建数据库方面遇到了问题。 我已正确安装/设置rails,mysql并安装了mysql 2.8.1 gem(我用gem列表验证了这一点)。
所以现在,我正在尝试运行'rake db:create:all',我收到以下错误:
无法为{“encoding”=>“utf8”,“username”=>“root”,“adapter”=>“mysql”,“database”=>“pyo”,“host”=>“localhost”创建数据库“,”“password”=> nil,“socket”=>“/ tmp / mysql.sock”},charset:utf8,collation:utf8_unicode_ci(如果手动设置字符集,请确保您具有匹配的排序规则)
无法为{“encoding”=>“utf8”,“username”=>“root”,“adapter”=>“mysql”,“database”=>“pyo_test”,“host”=>“localhost”创建数据库“,”“password”=> nil,“socket”=>“/ tmp / mysql.sock”},charset:utf8,collation:utf8_unicode_ci(如果手动设置字符集,请确保您具有匹配的排序规则)
我目前在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,collation:utf8_unicode_ci(如果你手动设置字符集,请确保你有匹配的排序规则)” - 这是问题吗? 如果是这样,我该如何解决?
我已经被困在这件事上好几个小时了,找不到任何对谷歌有帮助的东西。 所以在这一点上的任何帮助将非常感激。
谢谢!!
我知道这个帖子已经老了,但是作为一个IT人员,他相信在一个地方保持良好的可靠文档:
问题实际上源于您的“config / database.yml”文件。 您将ROR指向MySQL Socket的错误位置。
我遇到了这个问题,结果是gem是在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
结束编辑
我认为我有这样的东西......通过将其添加到database.yml来修复:
host: 127.0.0.1
或者在您的情况下,从localhost更改它。
我遇到了与mysql2 gem相同的问题。 然后我发现我的MySQL只在'localhost'中侦听而不是'127.0.0.1',所以我将它改为'localhost',现在我不再讨论这个问题了。 现在一切都有效。
我想分享我的解决方案。 我有我的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
所以,经过大约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),我的应用程序现在可以在我的本地计算机上完美运行。
希望这有助于某人!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.