fix: handle column not exists error
This commit is contained in:
parent
ab7c3fa98e
commit
a0cb35ffa4
@ -26,13 +26,12 @@ export default class UpdateIdToBigIntMigrator extends Migration {
|
||||
const queryGenerator = queryInterface.queryGenerator as any;
|
||||
|
||||
const updateToBigInt = async (model, fieldName) => {
|
||||
let sql;
|
||||
|
||||
const tableName = model.tableName;
|
||||
if (model.rawAttributes[fieldName].type instanceof DataTypes.INTEGER) {
|
||||
if (db.inDialect('postgres')) {
|
||||
await this.sequelize.query(
|
||||
`ALTER TABLE "${tableName}" ALTER COLUMN "${fieldName}" SET DATA TYPE BIGINT;`,
|
||||
{},
|
||||
);
|
||||
sql = `ALTER TABLE "${tableName}" ALTER COLUMN "${fieldName}" SET DATA TYPE BIGINT;`;
|
||||
} else if (db.inDialect('mysql')) {
|
||||
const dataTypeOrOptions = model.rawAttributes[fieldName];
|
||||
const attributeName = fieldName;
|
||||
@ -49,9 +48,18 @@ export default class UpdateIdToBigIntMigrator extends Migration {
|
||||
table: tableName,
|
||||
},
|
||||
);
|
||||
const sql = queryGenerator.changeColumnQuery(tableName, query);
|
||||
sql = queryGenerator.changeColumnQuery(tableName, query);
|
||||
|
||||
await this.sequelize.query(sql.replace(' PRIMARY KEY;', ' ;'), {});
|
||||
sql = sql.replace(' PRIMARY KEY;', ' ;');
|
||||
}
|
||||
|
||||
try {
|
||||
await this.sequelize.query(sql, {});
|
||||
} catch (err) {
|
||||
if (err.message.includes('does not exist')) {
|
||||
return;
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
|
||||
this.app.log.info(`updated ${tableName}.${fieldName} to BIGINT`, tableName, fieldName);
|
||||
@ -67,6 +75,12 @@ export default class UpdateIdToBigIntMigrator extends Migration {
|
||||
try {
|
||||
const primaryKeyField = model.tableAttributes[model.primaryKeyField];
|
||||
|
||||
const collection = db.modelCollection.get(model);
|
||||
|
||||
if (!collection) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (primaryKeyField && primaryKeyField.primaryKey) {
|
||||
await updateToBigInt(model, model.primaryKeyField);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user