迁移和加载模式都不会向Rails / MySQL数据库添加列

时间:2016-03-18 20:48:48

标签: mysql ruby-on-rails ruby rake rails-migrations

我已经创建了一个迁移,以便在Rails中将is_ms_admin列添加到我的MySQL数据库中:

class AddIsAdminToUsers < ActiveRecord::Migration
  def change
    add_column :users, :is_ms_admin, :boolean
  end
end

这相应地更新了架构:

create_table "users", force: :cascade do |t|
  t.string   "email",                  limit: 255, default: "", null: false
  t.string   "encrypted_password",     limit: 255, default: "", null: false
  t.datetime "remember_created_at"
  t.integer  "sign_in_count",          limit: 4,   default: 0,  null: false
  t.datetime "current_sign_in_at"
  t.datetime "last_sign_in_at"
  t.string   "current_sign_in_ip",     limit: 255
  t.string   "last_sign_in_ip",        limit: 255
  t.datetime "created_at"
  t.datetime "updated_at"
  t.boolean  "is_approved"
  t.string   "reset_password_token",   limit: 255
  t.datetime "reset_password_sent_at"
  t.boolean  "is_ms_admin"
end

在运行rake db:migrate时,迁移运行时不会抛出任何错误。使用rake db:schema:load也没有错误。两者似乎都很成功。

但是,当我从MySQL表中选择列名时,只存在大多数列:

mysql> SELECT `COLUMN_NAME` 
    -> FROM `INFORMATION_SCHEMA`.`COLUMNS` 
    -> WHERE `TABLE_SCHEMA`='metasmoke' 
    ->     AND `TABLE_NAME`='users';
+---------------------+
| COLUMN_NAME         |
+---------------------+
| id                  |
| email               |
| encrypted_password  |
| remember_created_at |
| sign_in_count       |
| current_sign_in_at  |
| last_sign_in_at     |
| current_sign_in_ip  |
| last_sign_in_ip     |
| created_at          |
| updated_at          |
| is_approved         |
+---------------------+

我主要关注is_ms_admin列,但了解两个reset_password列不存在的原因也很有用。

我没有从Rails控制台运行所有这些,所以问题不在于控制台有缓存的东西;在重新加载INFORMATION_SCHEMA表的情况下,很明显列并非根本创建,而不是任何周围的问题。

为什么列不存在,我该如何解决?

0 个答案:

没有答案