mysql - 当类型 "rake db:migrate"获得错误的文件描述符时出现错误

标签 mysql ruby-on-rails ruby rake migrate

迁移Mysql和Rails时遇到一些问题

信息--------------------------

MySQL Server 5.5 (I had try MySQL Server 5.1, but not work)
Ruby 1.9.3-p429
Rails 3.2

<小时/>

我已经用过

"gem install mysql2 -v 0.2.6"
"gem install mysql"

并添加到gemfile

gem 'mysql'
gem 'mysql2','>=0.2.6'

将数据库迁移到 MySQL 时出现错误
输入“rake db:migrate”
并得到错误的文件描述符

C:\Sites\demo> rake db:migrate
rake aborted!
Bad file descriptor
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

详情

C:\Sites\demo> rake db:migrate --trace
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:migrate
rake aborted!
Bad file descriptor
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6-x86-mi
ngw32/lib/active_record/connection_adapters/mysql2_adapter.rb:312:in `query'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6-x86-mi
ngw32/lib/active_record/connection_adapters/mysql2_adapter.rb:312:in `execute'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6-x86-mi
ngw32/lib/active_record/connection_adapters/mysql2_adapter.rb:629:in `configure_
connection'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6-x86-mi
ngw32/lib/active_record/connection_adapters/mysql2_adapter.rb:169:in `initialize
'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6-x86-mi
ngw32/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `new'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6-x86-mi
ngw32/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `mysql2_conn
ection'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/
lib/active_record/connection_adapters/abstract/connection_pool.rb:440:in `new_co
nnection'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/
lib/active_record/connection_adapters/abstract/connection_pool.rb:450:in `checko
ut_new_connection'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/
lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `acquir
e_connection'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/
lib/active_record/connection_adapters/abstract/connection_pool.rb:356:in `block
in checkout'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchr
onize'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/
lib/active_record/connection_adapters/abstract/connection_pool.rb:355:in `checko
ut'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/
lib/active_record/connection_adapters/abstract/connection_pool.rb:265:in `block
in connection'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchr
onize'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/
lib/active_record/connection_adapters/abstract/connection_pool.rb:264:in `connec
tion'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/
lib/active_record/connection_adapters/abstract/connection_pool.rb:546:in `retrie
ve_connection'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/
lib/active_record/connection_handling.rb:79:in `retrieve_connection'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/
lib/active_record/connection_handling.rb:53:in `connection'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/
lib/active_record/migration.rb:863:in `initialize'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/
lib/active_record/migration.rb:764:in `new'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/
lib/active_record/migration.rb:764:in `up'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/
lib/active_record/migration.rb:742:in `migrate'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/
lib/active_record/railties/databases.rake:42:in `block (2 levels) in <top (requi
red)>'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/task.rb:236:in `call'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/task.rb:236:in `block in execute'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/task.rb:231:in `each'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/task.rb:231:in `execute'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/task.rb:175:in `block in invoke_with_call_chain'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchr
onize'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/task.rb:168:in `invoke_with_call_chain'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/task.rb:161:in `invoke'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/application.rb:149:in `invoke_task'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/application.rb:106:in `block (2 levels) in top_level'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/application.rb:106:in `each'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/application.rb:106:in `block in top_level'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/application.rb:115:in `run_with_threads'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/application.rb:100:in `top_level'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/application.rb:78:in `block in run'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/application.rb:165:in `standard_exception_handling'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rak
e/application.rb:75:in `run'
D:/AppServ/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.0/bin/rak
e:33:in `<top (required)>'
D:/AppServ/RailsInstaller/Ruby1.9.3/bin/rake:23:in `load'
D:/AppServ/RailsInstaller/Ruby1.9.3/bin/rake:23:in `<main>'
Tasks: TOP => db:migrate

我修改了“database.yml”

development:
  adapter: mysql2
  encoding: utf8
  database: demo_development
  host: 127.0.0.1
  username: 'root'
  password: '1234'
  port: 3306

test:
  adapter: mysql2
  encoding: utf8
  database: demo_test
  host: 127.0.0.1
  username: 'root'
  password: '1234'
  port: 3306

production:
  adapter: mysql2
  encoding: utf8
  database: demo_production
  host: 127.0.0.1
  username: 'root'
  password: '1234'

希望有人能帮助我
我已经储备好几天了
谢谢!

最佳答案

尝试从gemfile中删除“mysql”gem,只需要“mysql2”,删除后进行捆绑安装。

来自github上mysql的文档

To use the Active Record driver (with or without rails), all you should need to do is have this gem installed and set the adapter in your database.yml to "mysql2". That was easy right? :)

NOTE: as of 0.3.0, and Active Record 3.1 - the Active Record adapter has been pulled out of this gem and into Active Record itself. If you need to use mysql2 with Rails versions < 3.1 make sure and specify gem "mysql2", "~> 0.2.7" in your Gemfile

另请参阅此内容以了解 Windows 中的安装问题

Rails installation windows 7 bad file descriptor mysql2

关于mysql - 当类型 "rake db:migrate"获得错误的文件描述符时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17918408/

相关文章:

mysql - 1M记录数据库查询优化

ruby-on-rails - Rails 4 - 在 Rails 中自定义 (json) 格式的响应对象

ruby - 如何将 Ruby 博客添加到 Rails 3 应用程序

html - 有关 Ruby 中 HTTP 拦截代理的帮助吗?

mysql - 需要刷新表吗?

mySQL 仅使用 SQL 语句删除带有通配符的表?

mysql - 检查MySQL中的查询是否至少有2行

javascript - 如何在多次点击提交后只提交一次表单?

ruby-on-rails - 在 yaml 列表中插入?

ruby - 如何在 Rack 应用程序的集成测试中启用中间件?