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

时间:2012-03-07 16:40:06

标签: ruby-on-rails ruby-on-rails-3

我在我的生产服务器上运行了迁移,并且我正在使用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不会抱怨错误值?

2 个答案:

答案 0 :(得分:11)

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

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

<强> PS 我错了。因此,您应该设置default: 0 :(。或者您可以修补ActiveRecord::Migration,以便它接受true|false

答案 1 :(得分:1)

这适用于PostgreSQL和MySQL:

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

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