我的项目中有 MySQL 数据库和 TypeORM。
我的实体定义如下:
export const CompanyRadarTypeEntity = new EntitySchema<ICompanyRadarTypeEntity>({
name: 'companyRadarType',
tableName: 'companyRadarType',
columns: {
idCompanyRadarType: {
type: Number,
primary: true,
generated: true,
},
type: {
type: String,
},
idCompany: {
type: Number,
},
createdAt: {
type: 'timestamp',
default: () => 'CURRENT_TIMESTAMP',
nullable: false,
createDate: true,
},
updatedAt: {
type: 'timestamp',
default: () => 'CURRENT_TIMESTAMP',
nullable: false,
updateDate: true,
},
},
relations: {
company: {
type: 'many-to-one',
target: 'company',
joinColumn: {
name: 'idCompany',
referencedColumnName: 'idCompany',
},
},
companyRadars: {
type: 'one-to-many',
target: 'companyRadar',
inverseSide: 'companyRadarType',
},
},
});
当我使用 typeorm 生成迁移时,它会给出以下 SQL:
await queryRunner.query(`
CREATE TABLE \`companyRadarType\` (
\`idCompanyRadarType\` int NOT NULL AUTO_INCREMENT,
\`type\` varchar(255) NOT NULL,
\`idCompany\` int NOT NULL,
\`createdAt\` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
\`updatedAt\` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(6),
PRIMARY KEY (\`idCompanyRadarType\`)
) ENGINE = InnoDB
`);
但是当我运行迁移时,它给了我错误:迁移运行期间出错:QueryFailedError:ER_INVALID_DEFAULT:'createdAt'的默认值无效
我注意到,当我从实体中删除 createDate: true 和 updateDate: true 时,它会将 timestamp(6) 类型替换为时间戳,但 SQL 没有 ON UPDATE CURRENT_TIMESTAMP 部分。
这种情况我能做什么?