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 queryGenerator = queryInterface.queryGenerator as any;
|
||||||
|
|
||||||
const updateToBigInt = async (model, fieldName) => {
|
const updateToBigInt = async (model, fieldName) => {
|
||||||
|
let sql;
|
||||||
|
|
||||||
const tableName = model.tableName;
|
const tableName = model.tableName;
|
||||||
if (model.rawAttributes[fieldName].type instanceof DataTypes.INTEGER) {
|
if (model.rawAttributes[fieldName].type instanceof DataTypes.INTEGER) {
|
||||||
if (db.inDialect('postgres')) {
|
if (db.inDialect('postgres')) {
|
||||||
await this.sequelize.query(
|
sql = `ALTER TABLE "${tableName}" ALTER COLUMN "${fieldName}" SET DATA TYPE BIGINT;`;
|
||||||
`ALTER TABLE "${tableName}" ALTER COLUMN "${fieldName}" SET DATA TYPE BIGINT;`,
|
|
||||||
{},
|
|
||||||
);
|
|
||||||
} else if (db.inDialect('mysql')) {
|
} else if (db.inDialect('mysql')) {
|
||||||
const dataTypeOrOptions = model.rawAttributes[fieldName];
|
const dataTypeOrOptions = model.rawAttributes[fieldName];
|
||||||
const attributeName = fieldName;
|
const attributeName = fieldName;
|
||||||
@ -49,9 +48,18 @@ export default class UpdateIdToBigIntMigrator extends Migration {
|
|||||||
table: tableName,
|
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);
|
this.app.log.info(`updated ${tableName}.${fieldName} to BIGINT`, tableName, fieldName);
|
||||||
@ -67,6 +75,12 @@ export default class UpdateIdToBigIntMigrator extends Migration {
|
|||||||
try {
|
try {
|
||||||
const primaryKeyField = model.tableAttributes[model.primaryKeyField];
|
const primaryKeyField = model.tableAttributes[model.primaryKeyField];
|
||||||
|
|
||||||
|
const collection = db.modelCollection.get(model);
|
||||||
|
|
||||||
|
if (!collection) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (primaryKeyField && primaryKeyField.primaryKey) {
|
if (primaryKeyField && primaryKeyField.primaryKey) {
|
||||||
await updateToBigInt(model, model.primaryKeyField);
|
await updateToBigInt(model, model.primaryKeyField);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user