Ruby on Rails Rake错误

blu*_*cky 6 rake ruby-on-rails

编辑:解决了这个问题,感谢这个论坛帖子:http://forums.aptana.com/viewtopic.php?f = 20&t = 7563&p = 27407&hilit = libmysql.dll#p27407.感谢大家!

我已经开始学习RoR并一直在尝试使用,rake db:migrate但我一直都遇到同样的错误.我可以使用连接到MySQL数据库C:\dev\railslist>mysql -u root railslist_development -p. rake db:migrate --trace产生以下内容:

C:\dev\railslist>rake db:migrate --trace
(in C:/dev/railslist)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
rake aborted!
Mysql::Error: query: not connected: CREATE TABLE 'schema_migrations' ('version'
varchar(255) NOT NULL) ENGINE=InnoDB
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti
on_adapters/abstract_adapter.rb:219:in 'rescue in log'
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti
on_adapters/abstract_adapter.rb:202:in 'log'
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti
on_adapters/mysql_adapter.rb:323:in 'execute'
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti
on_adapters/abstract/schema_statements.rb:114:in 'create_table'
...
Run Code Online (Sandbox Code Playgroud)

我的database.yml文件如下:

development:
  adapter: mysql
  database: railslist_development
  username: root
  password: **********
  host: localhost

  ...
Run Code Online (Sandbox Code Playgroud)

编辑:对不起,我混淆了...我可以使用连接到MySQL数据库mysql connect localhost- 它产生一长串命令和变量.另外,如果我输入,mysql -h localhost -u root -p我可以登录MySQL提示符.所以澄清:我可以通过命令行连接到MySQL数据库,但是在RoR Rake中会产生错误.

aro*_*ick 1

这几乎肯定是因为您的 mysql 实例未运行,或者您尚未将 config/database.yml 配置为指向适合您的环境(通常是开发)的正确数据库。这里有一些可以尝试的事情 -

  • 检查你的 config/database.yml - 你的主机在哪里(如果没有列出主机,它将连接到本地主机)
  • 尝试运行 mysql -h localhost 并查看 mysql 是否正在运行。

编辑: 如果您无法连接到本地主机数据库,那么问题就在那里,而不是Rails。确保它正在运行,并且您的权限设置正确以允许从您的计算机进行连接。另外,尝试从本地计算机以 root 身份进行连接,看看这是否是一个更细粒度的问题(例如您启用了本地连接,但不适用于您在 Rails 中使用的用户)。

编辑2: 在这种情况下,您的问题可能是您的数据库尚未创建。只需转到命令行并输入以下内容:

mysql -u root -p -e 'create database railslist_development;'

这应该创建数据库并允许您运行迁移。