添加在MySQL中有效的默认布尔值的正确方法是什么?

tde*_*lam 8 ruby-on-rails ruby-on-rails-3

我在我的生产服务器上运行了迁移,并且我正在使用MySQL,我收到此错误:

Mysql2 ::错误:'admin'的默认值无效:ALTER TABLE usersADD admintinyint(1)DEFAULT'false'`

我的迁移看起来像这样:

class AddAdminToUsers < ActiveRecord::Migration
  def change
    add_column :users, :admin, :boolean, default: :false
  end
end
Run Code Online (Sandbox Code Playgroud)

我理解错误是因为"false"不是tinyint的正确值,在这种情况下应该为0.我认为默认:: false是将布尔值默认为false的正确方法.

我如何解决这个问题,以便MySQL不会抱怨坏的价值?

fl0*_*00r 12

false不是我相信的象征.试试这个

add_column :users, :admin, :boolean, default: false
Run Code Online (Sandbox Code Playgroud)

PS 我错了.所以你应该设置default: 0:(.或者你可以修补ActiveRecord::Migration所以它会接受true|false

  • `default: 0` 在 Rails 5 中不起作用。`default: false` 有效 (3认同)