我如何更改列类型而不丢失使用 adonis 的迁移中的数据库数据?
How i can alter a column type without lose the database data in migration using adonis?
我有这个class:
class BookUnitQuestionSchema extends Schema {
up () {
this.create('book_unit_question', (table) => {
table.increments()
table.integer('book_unit_id').references('id').inTable('book_unit')
table.string('correct_answer_description')
table.boolean('status').defaultTo(false)
table.integer('user_id').references('id').inTable('users')
table.timestamps()
})
}
down () {
this.drop('book_unit_question')
}
}
我需要将列 correct_answer_description
的数据类型更改为 text
。
如果我将实际 up()
方法更改为:
table.text('correct_answer_description')
并制作一个:adonis migration:refresh
所有 table 都已重新创建,我丢失了此 table 中的数据。
如何只更改数据类型而不丢失数据?
我尝试类似的方法:
this.alter('book_unit_question', (table) => {
table.text('correct_answer_description')
})
并制作一个:
adonis migration:run
但我得到:
Nothing to migrate
您需要创建一个新的迁移文件,例如:
修改类型(新建迁移文件):.alter()
class BookUnitQuestionSchema extends Schema {
up() {
this.alter('book_unit_questions', (table) => {
table.text('correct_answer_description').notNullable().alter();
})
}
// reverse modification
down() {
this.table('book_unit_questions', (table) => {
table.string('correct_answer_description').notNullable().alter();
})
}
}
和 运行 待定迁移:
> adonis migration:run
我有这个class:
class BookUnitQuestionSchema extends Schema {
up () {
this.create('book_unit_question', (table) => {
table.increments()
table.integer('book_unit_id').references('id').inTable('book_unit')
table.string('correct_answer_description')
table.boolean('status').defaultTo(false)
table.integer('user_id').references('id').inTable('users')
table.timestamps()
})
}
down () {
this.drop('book_unit_question')
}
}
我需要将列 correct_answer_description
的数据类型更改为 text
。
如果我将实际 up()
方法更改为:
table.text('correct_answer_description')
并制作一个:adonis migration:refresh
所有 table 都已重新创建,我丢失了此 table 中的数据。
如何只更改数据类型而不丢失数据?
我尝试类似的方法:
this.alter('book_unit_question', (table) => {
table.text('correct_answer_description')
})
并制作一个:
adonis migration:run
但我得到:
Nothing to migrate
您需要创建一个新的迁移文件,例如:
修改类型(新建迁移文件):.alter()
class BookUnitQuestionSchema extends Schema {
up() {
this.alter('book_unit_questions', (table) => {
table.text('correct_answer_description').notNullable().alter();
})
}
// reverse modification
down() {
this.table('book_unit_questions', (table) => {
table.string('correct_answer_description').notNullable().alter();
})
}
}
和 运行 待定迁移:
> adonis migration:run