db:schema:使用mysql在RDS上转储。错误:无法转储表""因为遵循NoMethodError未定义的方法`type' for" int(11)":String

时间:2016-10-27 14:52:11

标签: mysql ruby-on-rails ruby database

设置:

  

rails:4.2.5.1
  ruby:2.2.4p230(2015-12-16修订版53155)[i386-mingw32]
  Windows 7环境

database.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 bin\rake db:schema:dump我的 schema.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位整数,但后来才知道" 11" in int(11)指的是显示大小,它仍然是32位整数。

任何人都可以解释为什么会发生这种情况或为什么ruby不会识别主键列的32位整数类型。

2 个答案:

答案 0 :(得分:0)

我认为您的数据库中有一个名为“type”的字段。 “type”是rails中的保留字(特别是对于数据库)。

解决方案:更改此字段的名称

Ex:“type”=> “typemore”

check this

答案 1 :(得分:0)

我设法通过对我的Gemfile进行以下更改来摆脱此错误。

gem 'mysql2', '~>0.3.13'
#gem 'activerecord-mysql2-adapter'

然后我跑bundle install来更新我的宝石。

我仍然不确定为什么会这样。