gpt4 book ai didi

mysql - rake db :create not working for legacy rails app (2. 3.5) 使用 MySQL (5.5.28)

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:29 25 4
gpt4 key购买 nike

我是一名新的 Rails 开发人员,我正在开发旧版 Rails 应用程序。每当我运行 rake db:create 命令时,我都会收到无法创建数据库的错误消息。我发现了许多与此相关的 StackOverflow 问题,但在对几乎所有解决方案排列进行故障排除时,我无法解决问题。

我创建了三个数据库(开发、生产、测试​​),创建了对这些数据库具有所有访问权限的用户,然后运行了 rake db:create

我正在运行 Mac OS X Lion、MySQL 5.5.28、Rails 2.3.5、Ruby 1.8.7。这是我的设置

development:
adapter: mysql
encoding: utf8
database: adva_development
username: adva
password: ****
host: localhost
socket: /tmp/mysql.sock

这是错误:

Couldn't create database for {"adapter"=>"mysql", "username"=>"adva", "host"=>"localhost", "encoding"=>"utf8", "database"=>"adva_development", "socket"=>"/tmp/mysql.sock", "password"=>"****"}, charset: utf8, collation: utf8_unicode_ci (if you set the charset manually, make sure you have a matching collation)

我已完成以下故障排除:

  1. 已验证用户和密码正确,并且用户可以访问数据库。 (使用 SELECT * FROM mysql.db WHERE Db = 'adva_development'\G; 双重检查用户访问权限。)

  2. 验证套接字是否正确。我不太了解套接字,但我可以在/tmp/mysql.sock 中清楚地看到它。

  3. 检查排序规则和字符集。我发现我已经用拉丁字符集和排序规则创建了数据库,所以我重新创建了它们。我运行了 show variables like "collat​​ion_database";show variables like "character_set_database"; 并分别返回了 utf8 和 utf8_unicode_ci。

  4. 我按照 this question 中的说明进行操作.卸载 mysql gem 后,我运行了以下命令,但出现了同样的错误:

    gem install --no-rdoc --no-ri mysql -- --with-mysql-dir=/usr/local/mysql-5.5.28-osx10.6-x86_64/bin --with-mysql-config=/usr/local/mysql-5.5.28-osx10.6-x86_64/bin/mysql_config 
  5. 按照 Matt 的建议,下面是 rake --trace db:create 揭示的内容:

    ** Invoke db:create (first_time)
    ** Invoke db:load_config (first_time)
    ** Invoke rails_env (first_time)
    ** Execute rails_env
    ** Execute db:load_config
    ** Execute db:create
    Couldn't create database for {"database"=>"adva_development", "adapter"=>"mysql", "host"=>"127.0.0.1", "password"=>"woof2adva", "username"=>"adva", "encoding"=>"utf8"}, charset: utf8, collation: utf8_unicode_ci (if you set the charset manually, make sure you have a matching collation)

3 天零六七个小时后,我几乎没有选择了。我尝试了各种随机操作,例如用 127.0.0.1 替换 localhost 都无济于事。

会不会是我的具体环境出了问题? Mac OS X Lion + MySQL 5.5.28?我计划尝试在 Linux 环境中设置所有内容。

谢谢!

最佳答案

您可以尝试将 localhost 更改为 127.0.0.1 并删除 socket 以使用 TCP/IP 而不是本地套接字。

或者尝试验证您的数据库服务器是否使用与 Rails 相同的套接字:

mysqladmin 变量 | grep 套接字

如果这没有帮助,则尝试使用纯 Ruby 连接到数据库服务器并创建一个新数据库:

require 'rubygems'
require 'mysql'

begin
db = Mysql.new('localhost', 'root', 'yourpassword')
db.query('create database sample_database;');
rescue Mysql::Error => e
puts e
ensure
db.close unless db.nil?
end

然后看看它是否运行。你应该安装 mysql gem (gem install mysql)

关于mysql - rake db :create not working for legacy rails app (2. 3.5) 使用 MySQL (5.5.28),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13335871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com