繁体   English   中英

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

[英]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,collat​​ion:utf8_unicode_ci(如果手动设置字符集,请确保您具有匹配的排序规则)

无法为{“encoding”=>“utf8”,“username”=>“root”,“adapter”=>“mysql”,“database”=>“pyo_test”,“host”=>“localhost”创建数据库“,”“password”=> nil,“socket”=>“/ tmp / mysql.sock”},charset:utf8,collat​​ion: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,collat​​ion: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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM