2014-01-21 5 views
0

Как изменить тип существующего объекта в Geddy?Как изменить тип свойства в Geddy

Я считаю, что нужно изменить тип, как набор при определении свойств в файле модели:

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

Я также думаю, что мне нужно изменить таблицу в миграции. Я использую функцию «» changeColumn как описано здесь 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; 

Однако, когда я запускаю эту миграцию я получаю «SQLITE_ERROR: возле„ALTER“» Ошибка:

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$ 

Это делает меня Думаю, я делаю что-то неправильно. Я попробовал параметр «--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 из ORM от Geddy (теперь на NPM) теперь включает дружественное сообщение об ошибке при попытке сделать это с помощью адаптера SQLite.

+0

Действительно, это действительно проблема. Похоже, я должен уметь обойти проблему, модифицируя все данные в этом столбце от текущего значения до «true» или «false» или того, что Geddy придерживается в столбцах, которые он создает как «booleans». –

 Смежные вопросы

  • Нет связанных вопросов^_^