당신은 아마 'true'
및 'false'
를 얻을 수 있습니다 : 그 보장 그리고 내가 부울 그래서 당신이 할 수 있습니다 않습니다 캐스트를 텍스트 무엇에 대한 권위있는 참조를 찾을 수없는 경우
psql> create table t (c boolean not null);
psql> insert into t (c) values (TRUE), (FALSE);
psql> alter table t alter column c type text;
psql> select * from t;
c
-------
true
false
는 잘 모르겠어요 이들의 PostgreSQL 버전에서 무슨 말을했는지 확인하십시오
psql> select TRUE::text;
psql> select FALSE::text;
수동으로 변환을 지정하기 위해 다음 USING을 사용할 수 있습니다 'True'
및 'False'
을 보장하려면 :
선택적 USING
절은 이전 열에서 새 열 값을 계산하는 방법을 지정합니다. 생략하면 기본 변환은 이전 데이터 유형에서 new 로의 배역 캐스팅과 동일합니다. 당신이 레일은 다음 캐스트 부울 - 투 - 텍스트의 기본을 얻을 것이다 표준 마이그레이션로 변환을 수행 할 경우 경우,
alter table t
alter column c type text
using case c when TRUE then 'True' when FALSE then 'False' else NULL end
:
그래서 당신은이 문제를 강제로 말할 수 SQL ALTER TABLE을 사용하여 유형을 수동으로 변경하면 발생하는 일을 제어 할 수 있습니다. 당신은 마이그레이션 내부 중 하나를 수행 할 수 있습니다
def up
change_column :t, :c, :text
end
여담으로
def up
connection.execute(%q{
alter table ...
})
end
대, I 텍스트 열에 대한 부울 열을 포기의 논리를 질문해야 할 것, 나에게 뒤로 조금 보인다 . 난 그냥 단지 9.1에 그것을 시도
change_column :table_name, :column_name, :string
:
이 프로덕션 데이터베이스입니다 같은 것을 생성해야합니까? –
해당 개발 DB 없음 – banditKing