首页 文章

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

提问于
浏览
7

我正试图在我的计算机上运行一个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(如果你手动设置字符集,请确保你有匹配的排序规则)” - 这是问题吗?如果是这样,我该如何解决?

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

谢谢!!

5 回答

  • 2

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

  • 0

    我认为我有这样的东西......通过将其添加到database.yml来修复:

    host: 127.0.0.1
    

    或者在您的情况下,从localhost更改它 .

  • 2

    我知道这个帖子已经老了,但是作为一个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

    是的错误可能会产生误导,但它与您的"encoding"无关,或者您使用的是localhost还是127.0.0.1 (At least in linux/UNIX systems these translate to the same thing and are synonymous)

    开始编辑

    Also it is not good to have encoding commented out like I do above. 所以我在这里提供修改以供参考 .

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

    结束编辑

  • 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),我的应用程序现在可以在我的本地计算机上完美运行 .

    希望这有助于某人!

  • 2

    我想分享我的解决方案 . 我有我的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
    

相关问题