【问题标题】:Ruby On rails: Cannot convert String to IntegerRuby On rails:无法将字符串转换为整数
【发布时间】:2014-01-30 19:47:52
【问题描述】:

我正在我的项目文件夹中的 Windows 命令行上运行 rake db:migrate..

我收到此非描述性错误:无法将字符串转换为整数

我已在下面发布了此错误的完整跟踪:

D:\Rails\MyBlog>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!
can't convert String into Integer
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mysql2-0.3.11-x86-mingw32/l
ib/mysql2/client.rb:44:in `connect'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mysql2-0.3.11-x86-mingw32/l
ib/mysql2/client.rb:44:in `initialize'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/connection_adapters/mysql2_adapter.rb:18:in `new'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/connection_adapters/mysql2_adapter.rb:18:in `mysql2_connection'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/connection_adapters/abstract/connection_pool.rb:440:in `new_connection
'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/connection_adapters/abstract/connection_pool.rb:450:in `checkout_new_c
onnection'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/connection_adapters/abstract/connection_pool.rb:421:in `acquire_connec
tion'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/connection_adapters/abstract/connection_pool.rb:356:in `block in check
out'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/connection_adapters/abstract/connection_pool.rb:355:in `checkout'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/connection_adapters/abstract/connection_pool.rb:265:in `block in conne
ction'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/connection_adapters/abstract/connection_pool.rb:264:in `connection'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/connection_adapters/abstract/connection_pool.rb:546:in `retrieve_conne
ction'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/connection_handling.rb:79:in `retrieve_connection'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/connection_handling.rb:53:in `connection'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/migration.rb:863:in `initialize'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/migration.rb:764:in `new'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/migration.rb:764:in `up'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/migration.rb:742:in `migrate'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/acti
ve_record/railties/databases.rake:42:in `block (2 levels) in <top (required)>'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/task.r
b:236:in `call'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/task.r
b:236:in `block in execute'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/task.r
b:231:in `each'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/task.r
b:231:in `execute'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/task.r
b:175:in `block in invoke_with_call_chain'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/task.r
b:168:in `invoke_with_call_chain'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/task.r
b:161:in `invoke'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/applic
ation.rb:149:in `invoke_task'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/applic
ation.rb:106:in `block (2 levels) in top_level'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/applic
ation.rb:106:in `each'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/applic
ation.rb:106:in `block in top_level'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/applic
ation.rb:115:in `run_with_threads'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/applic
ation.rb:100:in `top_level'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/applic
ation.rb:78:in `block in run'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/applic
ation.rb:165:in `standard_exception_handling'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/lib/rake/applic
ation.rb:75:in `run'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.1.1/bin/rake:33:in
`<top (required)>'
C:/RailsInstaller/Ruby1.9.3/bin/rake:23:in `load'
C:/RailsInstaller/Ruby1.9.3/bin/rake:23:in `<main>'
Tasks: TOP => db:migrate

D:\Rails\MyBlog>

我该如何解决这个问题?有什么想法吗?

编辑

我的代码:

class CreateBlogPosts < ActiveRecord::Migration
  def change
    create_table :blog_posts do |t|
      t.string :title
      t.string :content
      t.datetime :publishDate

      t.timestamps
    end
  end
end

Database.yml

# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
development:
  adapter: mysql2
  encoding: utf8
  database: gts
  username: heuro
  password: userPass
  host: 'localhost'
  port: '3306'
  socket: /tmp/mysql.sock

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
    adapter: mysql2
    encoding: utf8
    database: gts
    username: heuro
    password: userPass
    host: '127.0.0.1'
    port: '3306'

production:
    adapter: mysql2
    encoding: utf8
    database: gts
    username: heuro
    password: userPass
    host: '127.0.0.1'
    port: '3306'

【问题讨论】:

  • 只有错误,不足以帮助你。还需要看代码。
  • 你说的是database.yml文件吗?
  • 是的,您可能对database.yml 有疑问
  • 您创建了迁移并更新了迁移文件夹中的一些迁移源?检查那里的正确语法。如果没有任何其他信息,我会说那里的可能性是一个问题。
  • 我已经编辑了这个问题..你能帮我看看这个问题吗..我对这些错误感到非常沮丧.. Rails 非常新

标签: ruby-on-rails ruby rubygems rake


【解决方案1】:

查看 mysql2 gem 的 source,我认为您的问题可能是您在 YAML 文件中将端口作为字符串。

尝试将其更改为如下所示:

development:
  adapter: mysql2
  encoding: utf8
  database: gts
  username: heuro
  password: userPass
  host: 'localhost'
  port: 3306
  socket: /tmp/mysql.sock

【讨论】:

  • 不知道这么简单的改变就能让它发挥作用..你是上帝..! :) 你救了我.. :)
  • 很高兴成功了!检查源代码以了解此类事情的工作原理以及它们究竟为什么会中断总是有帮助的。
  • 我以后会注意的.. :)
【解决方案2】:

编辑您的 database.yml 文件,使其如下所示:

development:
  adapter: mysql2
  database: gts
  user: heuro
  password: userPass
  host: localhost
  pool: 5
  timeout: 5000

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 2010-09-06
    • 2017-01-13
    • 2017-09-12
    相关资源
    最近更新 更多