我正在使用 NodeJS 与 Sequelize ORM 和 Postgress 数据库
我正在使用迁移文件在表中创建名为education_level
的 ENUM 列,如下所示,枚举值(Bachelor's Degree)有单引号,当我尝试运行迁移时它会给出以下错误,谢谢帮忙!
迁移文件
'use strict';
module.exports = {
up: function(queryInterface, Sequelize) {
return queryInterface.createTable('Education', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
school: {
type: Sequelize.STRING
},
degree: {
type: Sequelize.STRING
},
field_of_study: {
type: Sequelize.STRING
},
year_started: {
type: Sequelize.STRING(4)
},
year_graduated: {
type: Sequelize.STRING(4)
},
education_level: {
type: Sequelize.ENUM,
values: ['Diploma','Bachelor\'s Degree','Master\'s Degree','Doctorate Degree'],
},
profile_id: {
type: Sequelize.INTEGER,
allowNull: true
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
},
down: function(queryInterface, Sequelize) {
return queryInterface.dropTable('Education');
}
};
错误
{ SequelizeBaseError: syntax error at or near "s"
migrate_1 | at Query.formatError (/usr/src/app/node_modules/sequelize/lib/dialects/postgres/query.js:357:14)
migrate_1 | at Query.<anonymous> (/usr/src/app/node_modules/sequelize/lib/dialects/postgres/query.js:88:19)
migrate_1 | at emitOne (events.js:96:13)
migrate_1 | at Query.emit (events.js:191:7)
migrate_1 | at Query.handleError (/usr/src/app/node_modules/pg/lib/query.js:108:8)
migrate_1 | at Connection.<anonymous> (/usr/src/app/node_modules/pg/lib/client.js:171:26)
migrate_1 | at emitOne (events.js:96:13)
migrate_1 | at Connection.emit (events.js:191:7)
migrate_1 | at Socket.<anonymous> (/usr/src/app/node_modules/pg/lib/connection.js:109:12)
migrate_1 | at emitOne (events.js:96:13)
migrate_1 | at Socket.emit (events.js:191:7)
migrate_1 | at readableAddChunk (_stream_readable.js:176:18)
migrate_1 | at Socket.Readable.push (_stream_readable.js:134:10)
migrate_1 | at TCP.onread (net.js:563:20)
migrate_1 | name: 'SequelizeDatabaseError',
migrate_1 | message: 'syntax error at or near "s"',
migrate_1 | parent:
migrate_1 | { error: syntax error at or near "s"
migrate_1 | at Connection.parseE (/usr/src/app/node_modules/pg/lib/connection.js:539:11)
migrate_1 | at Connection.parseMessage (/usr/src/app/node_modules/pg/lib/connection.js:366:17)
migrate_1 | at Socket.<anonymous> (/usr/src/app/node_modules/pg/lib/connection.js:105:22)
migrate_1 | at emitOne (events.js:96:13)
migrate_1 | at Socket.emit (events.js:191:7)
migrate_1 | at readableAddChunk (_stream_readable.js:176:18)
migrate_1 | at Socket.Readable.push (_stream_readable.js:134:10)
migrate_1 | at TCP.onread (net.js:563:20)
migrate_1 | name: 'error',
migrate_1 | length: 90,
migrate_1 | severity: 'ERROR',
migrate_1 | code: '42601',
migrate_1 | detail: undefined,
migrate_1 | hint: undefined,
migrate_1 | position: '84',
migrate_1 | internalPosition: undefined,
migrate_1 | internalQuery: undefined,
migrate_1 | where: undefined,
migrate_1 | schema: undefined,
migrate_1 | table: undefined,
migrate_1 | column: undefined,
migrate_1 | dataType: undefined,
migrate_1 | constraint: undefined,
migrate_1 | file: 'scan.l',
migrate_1 | line: '1086',
migrate_1 | routine: 'scanner_yyerror',
migrate_1 | sql: 'CREATE TYPE "public"."enum_Education_education_level" AS ENUM(\'Diploma\', \'Bachelor\'s Degree\', \'Master\'s Degree\', \'Doctorate Degree\');' },
migrate_1 | original:
migrate_1 | { error: syntax error at or near "s"
migrate_1 | at Connection.parseE (/usr/src/app/node_modules/pg/lib/connection.js:539:11)
migrate_1 | at Connection.parseMessage (/usr/src/app/node_modules/pg/lib/connection.js:366:17)
migrate_1 | at Socket.<anonymous> (/usr/src/app/node_modules/pg/lib/connection.js:105:22)
migrate_1 | at emitOne (events.js:96:13)
migrate_1 | at Socket.emit (events.js:191:7)
migrate_1 | at readableAddChunk (_stream_readable.js:176:18)
migrate_1 | at Socket.Readable.push (_stream_readable.js:134:10)
migrate_1 | at TCP.onread (net.js:563:20)
migrate_1 | name: 'error',
migrate_1 | length: 90,
migrate_1 | severity: 'ERROR',
migrate_1 | code: '42601',
migrate_1 | detail: undefined,
migrate_1 | hint: undefined,
migrate_1 | position: '84',
migrate_1 | internalPosition: undefined,
migrate_1 | internalQuery: undefined,
migrate_1 | where: undefined,
migrate_1 | schema: undefined,
migrate_1 | table: undefined,
migrate_1 | column: undefined,
migrate_1 | dataType: undefined,
migrate_1 | constraint: undefined,
migrate_1 | file: 'scan.l',
migrate_1 | line: '1086',
migrate_1 | routine: 'scanner_yyerror',
migrate_1 | sql: 'CREATE TYPE "public"."enum_Education_education_level" AS ENUM(\'Diploma\', \'Bachelor\'s Degree\', \'Master\'s Degree\', \'Doctorate Degree\');' },
migrate_1 | sql: 'CREATE TYPE "public"."enum_Education_education_level" AS ENUM(\'Diploma\', \'Bachelor\'s Degree\', \'Master\'s Degree\', \'Doctorate Degree\');' }
api_migrate_1 exited with code 1
答案 0 :(得分:3)
您需要使用另一个单引号来逃避该单引号。所以这可能会奏效:
education_level: {
type: Sequelize.ENUM,
values: ['Diploma','Bachelor\'\'s Degree','Master\'\'s Degree','Doctorate Degree'],
},