添加在MySQL中有效的默认布尔值的正确方法是什么?
我在我的生产服务器上运行了迁移,并且我正在使用MySQL,我收到此错误:
Mysql2 ::错误:’admin’的默认值无效:ALTER TABLE
users
ADDadmin
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的新哈希语法,但我不认为这将是一个问题。