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

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

Mysql2 ::错误:’admin’的默认值无效:ALTER TABLE users ADD admin tinyint(1)DEFAULT’false’`

我的迁移看起来像这样:

 class AddAdminToUsers < ActiveRecord::Migration def change add_column :users, :admin, :boolean, default: :false end end 

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

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

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

 add_column :users, :admin, :boolean, default: false 

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

这适用于PostgreSQL和MySQL:

 add_column :users, :admin, :boolean, :default => false 

我没有尝试使用Ruby 1.9.2的新哈希语法,但我不认为这将是一个问题。