Setup:
rails: 4.2.5.1
Ruby: 2.2.4p230 (2015-12-16 revision 53155) [i386-mingw32]
Windows 7环境
数据库。yml:
default: &default
adapter: mysql2
encoding: utf8
database: "database"
username: "name"
password: "password"
host: "host"
port: 3306
development:
adapter: mysql2
encoding: utf8
database: "database"
username: "name"
password: "password"
host: "host"
port: 3306
我试图在RDS上使用现有的mysql数据库。我用
创建了一个新项目rails new "app"
,然后尝试获取数据库模式。当我运行ruby binrake db:schema:dump
在我的模式中的输出。对于数据库中的每个表,Rb 文件填充了相同的错误:
ActiveRecord::Schema.define() do
# Could not dump table "test" because of following NoMethodError
# undefined method `type' for "int(11)":String
end
我一开始以为这可能是因为int(11)是一个64位的整数,但后来了解到int(11)中的"11"指的是显示大小,它仍然是一个32位的整数。
谁能解释一下为什么会发生这种情况,或者为什么ruby不能识别主键列的32位整数类型
我想你在你的数据库中有一个名为"type"的字段。"type"是rails中的保留字(特别是对于数据库)。
解决方法:修改此字段的名称
示例:"type" => "typemore"
检查这个
我设法通过对我的Gemfile进行以下更改来摆脱这个错误。
gem 'mysql2', '~>0.3.13'
#gem 'activerecord-mysql2-adapter'
然后我运行bundle install
来更新我的宝石。
我仍然不确定为什么这个工作