2012-03-07 7 views
4

내가 내 프로덕션 서버에 내 마이그레이션을 실행하고 내가 MySQL을 사용하고,이 오류가 발생합니다 :MySQL에서 작동하는 기본 부울 값을 추가하는 올바른 방법은 무엇입니까?

Mysql2::Error: Invalid default value for '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 

이해 오류 때문에 "거짓 "는 작은 값의 적절한 값이 아니며,이 경우 0이어야합니다. 기본 false로 false를 기본값으로 설정하는 올바른 방법이라고 생각했습니다.

MySQL이 잘못된 값에 대해 불평하지 않도록 어떻게 수정합니까?

답변

8

false은 내가 믿는 상징이 아닙니다. 이

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

PS 내가 잘못을보십시오. 그래서 당신은 :(default: 0를 설정해야합니다 또는 당신은 그래서 이것은 PostgreSQL의와 MySQL 모두에서 작동 true|false

0

받아 ActiveRecord::Migration을 패치 할 수 있습니다. 나는 루비 1.9.2의 새로운 해시이 시도하지 않은

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

을 구문,하지만 그게 문제가 될 것이라고 생각하지 않습니다.

+0

러시 - 이것은 내 첫 번째 게시물에 오류가 던졌습니다 정확히 무엇입니까? 나는 똑같은 생각했을 테지만 mysql은 tinyint 데이터 유형을 사용합니다 부울 값에 대해 "false"를 지정하면 합법적으로 오류가 발생하므로 작동 방식을 확인할 수 없습니다. – JeffC

+0

@Jef fC - 저는 로컬에서 MySQL과 PostgreSQL을 프로덕션 환경에서 돌리고 있습니다. ActiveRecord는 사용하는 어댑터에 따라 올바른 데이터 유형을 선택합니다. – Rush

관련 문제