尝试使用Rails创建数据库时出错,rake db:create。

15

我正在使用Ruby1.9和Rails 2.3.4,并且已经安装了mysql-ruby(2.8.1)gem。

当我尝试运行rake db:create时,会出现以下错误:

无法为 {"adapter"=>"mysql", "database"=>"war_development", "username"=>"root", "password"=>nil, "host"=>"localhost"},字符集:utf8, 排序规则:utf8_unicode_ci(如果您手动设置字符集,请确保您有匹配的排序规则)

我的database.yml文件在development环境下如下:

development:
  adapter: mysql
  database: war_development
  username: root
  password: 
  host: localhost

有没有什么想法是出了什么问题?

谢谢,

Tam


从错误来看,我会说你的数据库字符集与你试图执行的任务不匹配:字符集:utf8 校对规则: utf8_unicode_ci不确定在Rails中是否有一种设置查询字符集的方法? - SeanJA
5个回答

6

您是否可以无需密码使用root用户?MySQL服务器是否在127.0.0.1或localhost上进行侦听?


4
我使用了127.0.0.1而不是localhost……似乎有所不同。 - Tam
也许这样更清楚:https://dev59.com/wGs05IYBdhLWcg3wNPI3 - BvuRVKyUVlViVIc7
哇,对我来说恰恰相反:127.0.0.1不起作用,但localhost可以。 - Mark Kramer

4
奇怪的是看到一些行为改变,我不知道它是否只发生在雪豹系统上。我使用老虎系统也遇到了相同的错误。我添加了

标签。
  host: 127.0.0.1

以下是相关内容(当然需要正确的mysql root/pw):

development:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: blog_development
  pool: 5
  username: root
  password: *********
  socket: /tmp/mysqld.sock

它在tiger/gem mysql-2.8.1/mysql Ver 14.14 Distrib 5.1.30上运行成功。希望能帮到你。


0

我按照另一个SO线程中的步骤进行操作。然而,我的安装命令与那里的不同,因为我不是升级现有的数据库,而是安装全新的数据库。所以我没有使用建议的命令。

$ sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

我输入了以下内容

$ sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql/bin/mysql

注意:主机名 localhost 保持不变,无需更改为 127.0.0.1


0
$ sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql/bin/mysql

对我来说可行。谢谢!


0
你需要检查你的用户名和密码是否正确,同时也要检查你的MySQL服务器是否正常工作。有时会出现套接字路径问题,大多数情况下它在/tmp目录中,但有时可能不在。所以请尝试使用默认路径来解决这个问题。
希望如果你尝试这个方法,它会对你有帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接