【问题标题】:Error creating Rails DB using rake db:create使用 rake db:create 创建 Rails DB 时出错
【发布时间】:2010-04-20 05:26:15
【问题描述】:

我正在尝试在我的 OSX 10.6.3 机器上使用 rails 的 getting started guide 来实现我的第一个“hello world”rails 示例。

当我去执行第一个rake db:create 命令时(我正在使用mysql)我得到:

simon@/Users/simon/source/rails/blog/config: rake db:create  (in /Users/simon/source/rails/blog) Couldn't create database for {"reconnect"=>false, "encoding"=>"utf8", "username"=>"root", "adapter"=>"mysql", "database"=>"blog_development", "pool"=>5, "password"=>nil, "socket"=>"/opt/local/var/run/mysql5/mysqld.sock"}, charset: utf8, collation: utf8_unicode_ci (if you set the charset manually, make sure you have a matching collation)

我发现很多 stackoverflow 问题通过以下建议解决了这个问题:

  1. 验证用户和密码是否正确(我在我的开发盒上运行时没有 root 密码)

  2. 验证套接字是否正确 - 我可以 cat 套接字,所以我认为它是正确的

  3. 验证用户是否可以创建数据库(如您所见,root 可以连接并创建此数据库没问题)

    simon@/Users/simon/source/rails/blog/config: mysql -uroot -hlocalhost 欢迎使用 MySQL 监视器。命令以 ; 结尾或\g。 您的 MySQL 连接 ID 为 16 服务器版本:5.1.45 源码分发

    键入“帮助;”或 '\h' 寻求帮助。输入 '\c' 清除当前输入语句。

    mysql> 创建数据库 blog_development; 查询正常,1 行受影响(0.00 秒)

为了确保这不是字符集问题,我也尝试过:

mysql> create database foobar CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

注意:这是我的 database.yaml:

development:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: blog_development
  pool: 5
  username: root
  password:
  socket: /opt/local/var/run/mysql5/mysqld.sock
#  host: localhost

请注意,我尝试将套接字切换到本地主机,但没有任何效果。

对这里可能发生的事情有任何想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby rake


    【解决方案1】:

    感谢所有帮助的人。看起来问题与我在 OSX 下安装 mysql gem 有关。

    @tim 在我进行下一步并起床后我在控制台上遇到错误,所以我做了一些搜索,发现了这个helpful thread。

    在我卸载了我的 ruby​​ gems gem uninstall mysql 之后,我使用这个命令(来自线程)安装了正确的 mysql gems:

    export ARCHFLAGS="-arch i386 -arch x86_64" ; gem install --no-rdoc --no-ri mysql -- --with-mysql-dir=/opt/local/lib/mysql5 --with-mysql-config=/opt/local/lib/mysql5/bin/mysql_config

    执行此操作后,我能够成功运行rake db:create 并继续。

    谢谢!!

    【讨论】:

      【解决方案2】:

      可能有很多东西。

      • 您的数据库设置为 utf8 字符集吗?
      • 套接字的路径是否正确,因为它因操作系统而异。
      • 您是否重新安装了 mysql gem? sudo gem install mysql
      • 可能是 MySQL,您可能希望将版本降级到 5.0

      除此之外,我不确定。

      【讨论】:

      • +1 在 Ubuntu 16.04 上,我的问题是我的套接字 /tmp/mysql.sock 与通常的不同。 /var/run/mysqld/mysqld.sock
      【解决方案3】:

      你应该在这里发布你的 database.yml

      为了让你的测试更好,我会尝试创建一个 UTF-8 数据库,看看你的数据库是否支持 utf-8

      create database foobar CHARACTER SET utf8 COLLATE utf8_general_ci
      

      【讨论】:

      • 啊,好点子。让我发布我的database.yaml:开发:适配器:mysql编码:utf8重新连接:false数据库:blog_development池:5用户名:root密码:socket:/opt/local/var/run/mysql5/mysqld.sock#主机:localhost请注意,我尝试将套接字切换到本地主机但没有任何效果。关于字符集测试的好主意:mysql> create database foobar CHARACTER SET utf8 COLLATE utf8_general_ci;查询正常,1 行受影响(0.00 秒)但不幸的是没有运气。
      • 请注意我在上面发布的评论格式更好
      【解决方案4】:

      blog_development 数据库是否已经存在?

      如果是这样,您可以继续下一步。

      尝试在blog/ 目录中运行ruby script/server。

      如果它没有出错,那么您应该能够导航到localhost:3000 并从这里http://guides.rubyonrails.org/getting_started.html#hello-rails 继续教程。

      如果ruby script/server 出错,请给我留言。

      【讨论】:

      • 感谢您的建议,非常感谢!在我手动创建 blog_development DB 之后,我能够启动 rails 并继续。不过我有点担心这个错误,也许这意味着我将来会遇到数据库连接问题?
      【解决方案5】:

      我也遇到了同样的问题:它是一个旧的 mysql gem,不是最新的。重新安装 mysql gem 就可以了。

      【讨论】:

        【解决方案6】:

        使用此命令重新安装 mysql-server 和 mysql-client:

        sudo apt-get install mysql-server mysql-client
        

        然后您需要安装一些库以使 MySQL 可用于 ruby​​:

        sudo apt-get install libmysql-ruby
        

        这一切都解决了我的问题。尝试一下 !!! :)

        【讨论】:

          猜你喜欢
          • 2010-11-28
          • 2012-09-30
          • 1970-01-01
          • 2011-08-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-13
          • 1970-01-01
          相关资源
          最近更新 更多