2014-01-21 3 views
0

Geddy에서 기존 속성의 유형을 변경하려면 어떻게해야합니까?Geddy에서 속성 유형을 변경하는 방법

나는 모델 파일의 속성을 정의 할 때 나는 세트로 유형을 변경해야 믿습니다

this.defineProperties({ 
    title: {type: 'string', required: true}, 
    description: {type: 'text'}, 
    status: {type: 'boolean'} 
}); 

나는 또한 내가 마이그레이션 테이블을 변경할 필요가 있다고 생각합니다.

Hindenburg:to_do Tom$ geddy jake db:migrate --trace 
Running migrations for development environment... 
Running status_to_boolean (up) 
jake aborted. 
Error: SQLITE_ERROR: near "ALTER": syntax error 
Hindenburg:to_do Tom$ 

이 나를 만든다 : 오류 : '근처 "ALTER"SQLITE_ERROR'나는이 마이그레이션을 실행할 때 내가 얻을, http://geddyjs.org/guide#models

var StatusToBoolean = function() { 
    this.up = function (next) { 
    this.changeColumn("step", 'status', 'boolean', function (err, data) { 
     if (err) { throw err; } 
     next(); 
    }); 
    }; 

    this.down = function (next) { 
    this.changeColumn('step', 'status', 'string', function (err, data) { 
     if (err) { throw err; } 
     next(); 
    }); 
    }; 
}; 

exports.StatusToBoolean = StatusToBoolean; 

그러나 여기에 설명 된대로 나는 'changeColumn'기능을 사용하고 있습니다 내가 뭔가 잘못하고 있다고 생각해. 내가 볼 수 있듯이 '--trace'옵션을 시도했지만 유용한 정보를 제공하지 못했습니다.

실제로 테이블의 일부 데이터를 변경해야합니다 (새 데이터 유형에 매핑 할 수 있음).하지만 문서에서이를 수행하는 방법이 불분명합니다.

도움을 주시면 감사하겠습니다. 감사.

답변

1

불행히도 SQLite는 ALTER COLUMN (http://www.sqlite.org/lang_altertable.html)을 지원하지 않습니다. 이 문제는 SQLite 어댑터에서만 발생하며 Postgres 또는 MySQL에는 영향을 미치지 않습니다. 여기에 설명 된 해결 방법도 있습니다. How do I rename a column in a SQLite database table?이 단계를 수행하는 마이그레이션을 작성할 수 있습니다. 버전 0.4.16의 Geddy ORM (현재 NPM)은 SQLite 어댑터로이 작업을 시도 할 때 친숙한 오류 메시지를 포함합니다.

+0

실제로 문제가있는 것 같습니다. 어떻게 든 현재 열의 값을 'true'또는 'false'로 변경하거나 Geddy가 'boolean'으로 만드는 열을 고수하는 방식으로이 열의 모든 데이터를 수정해야 문제를 해결할 수있을 것 같습니다. –