Error Handling/에러핸들링
name: 'SequelizeDatabaseError', parent: Error: Unknown column 'likeId' in 'field list' , No migrations were executed, database schema was already up to date.
sangwoo_rhie
2023. 7. 6. 12:01
No migrations were executed, database schema was already up to date.
name: 'SequelizeDatabaseError', parent: Error: Unknown column 'likeId' in 'field list'
이 두가지 에러는 각각 다르지만 해결책은 똑같기에 한번에 정리해서 쓴다.
1. 시퀄라이즈 sequelize에서 테이블을 생성 및 수정했는데 MySQL DB 데이터베이스에 반영이 안 될때.
2. 테이블 내 컬럼명을 바꾸고 서버를 켜서 썬더클라이언트를 했더니 400 Bad Request 나올 때.
테이블이 없는데도 업데이트 이미 되있다고 마이그레이션이 안될 때가 있다.
sequelize는 SequelizeMeta라는 테이블을 만들어서 migration 상태를 저장한다.
undo할 때 여기 저장된 migration 정보를 읽어서 down을 실행시키는 것 같다.
select * from "SequelizeMeta";
하고 있으면
drop table "SequelizeMeta";
SequelizeMeta 테이블에 들어가서, 순서대로
DELETE FROM SequelizeMeta;
SELECT * FROM SequelizeMeta; // 비워짐
npx sequelize db:migrate // 터미널에 씀
SELECT * FROM SequelizeMeta; // 생성됨
이렇게 하면 된다.
SequelizeMeta에는 migration 정보를 갖고있어서 이런식으로 해결이 가능하다. 아래는 에러 전문.
Executing (default): SELECT `userId`, `email`, `password`, `nickname`, `age`, `gender`, `profileImage`, `createdAt`, `updatedAt` FROM `Users` AS `Users` WHERE `Users`.`userId` = 3;
Executing (default): SELECT `postId`, `UserId`, `title`, `content`, `createdAt`, `updatedAt` FROM `Posts` AS `Posts` WHERE `Posts`.`postId` = '1';
Executing (default): SELECT `likeId`, `postId`, `userId`, `createdAt`, `updatedAt` FROM `PostLikes` AS `PostLikes` WHERE (`PostLikes`.`postId` = 3 AND `PostLikes`.`userId` = 1) LIMIT 1;
Error
at Query.run (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\sequelize\lib\dialects\mysql\query.js:52:25)
at C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\sequelize\lib\sequelize.js:315:28
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async MySQLQueryInterface.select (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\sequelize\lib\dialects\abstract\query-interface.js:407:12)
at async PostLikes.findAll (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\sequelize\lib\model.js:1140:21)
at async PostLikes.findOne (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\sequelize\lib\model.js:1240:12)
at async C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\routes\postlikes.js:18:36 {
name: 'SequelizeDatabaseError',
parent: Error: Unknown column 'likeId' in 'field list'
at Packet.asError (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\packets\packet.js:728:17)
at Query.execute (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\commands\command.js:29:26)
at Connection.handlePacket (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\connection.js:492:32)
at PacketParser.onPacket (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\connection.js:97:12)
at PacketParser.executeStart (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\packet_parser.js:75:16)
at Socket.<anonymous> (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\connection.js:104:25)
at Socket.emit (node:events:513:28)
at addChunk (node:internal/streams/readable:324:12)
at readableAddChunk (node:internal/streams/readable:297:9)
at Readable.push (node:internal/streams/readable:234:10) {
code: 'ER_BAD_FIELD_ERROR',
errno: 1054,
sqlState: '42S22',
sqlMessage: "Unknown column 'likeId' in 'field list'",
sql: 'SELECT `likeId`, `postId`, `userId`, `createdAt`, `updatedAt` FROM `PostLikes` AS `PostLikes` WHERE (`PostLikes`.`postId` = 3 AND `PostLikes`.`userId` = 1) LIMIT 1;',
parameters: undefined
},
original: Error: Unknown column 'likeId' in 'field list'
at Packet.asError (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\packets\packet.js:728:17)
at Query.execute (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\commands\command.js:29:26)
at Connection.handlePacket (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\connection.js:492:32)
at PacketParser.onPacket (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\connection.js:97:12)
at PacketParser.executeStart (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\packet_parser.js:75:16)
at Socket.<anonymous> (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\connection.js:104:25)
at Socket.emit (node:events:513:28)
at addChunk (node:internal/streams/readable:324:12)
at readableAddChunk (node:internal/streams/readable:297:9)
at Readable.push (node:internal/streams/readable:234:10) {
code: 'ER_BAD_FIELD_ERROR',
errno: 1054,
sqlState: '42S22',
sqlMessage: "Unknown column 'likeId' in 'field list'",
sql: 'SELECT `likeId`, `postId`, `userId`, `createdAt`, `updatedAt` FROM `PostLikes` AS `PostLikes` WHERE (`PostLikes`.`postId` = 3 AND `PostLikes`.`userId` = 1) LIMIT 1;',
parameters: undefined
},
sql: 'SELECT `likeId`, `postId`, `userId`, `createdAt`, `updatedAt` FROM `PostLikes` AS `PostLikes` WHERE (`PostLikes`.`postId` = 3 AND `PostLikes`.`userId` = 1) LIMIT 1;',
parameters: {}
}
Executing (default): SELECT `userId`, `email`, `password`, `nickname`, `age`, `gender`, `profileImage`, `createdAt`, `updatedAt` FROM `Users` AS `Users` WHERE `Users`.`userId` = 3;
Executing (default): SELECT `postId`, `UserId`, `title`, `content`, `createdAt`, `updatedAt` FROM `Posts` AS `Posts` WHERE `Posts`.`postId` = '1';
Executing (default): SELECT `likeId`, `postId`, `userId`, `createdAt`, `updatedAt` FROM `PostLikes` AS `PostLikes` WHERE (`PostLikes`.`postId` = 3 AND `PostLikes`.`userId` = 1) LIMIT 1;
Error
at Query.run (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\sequelize\lib\dialects\mysql\query.js:52:25)
at C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\sequelize\lib\sequelize.js:315:28
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async MySQLQueryInterface.select (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\sequelize\lib\dialects\abstract\query-interface.js:407:12)
at async PostLikes.findAll (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\sequelize\lib\model.js:1140:21)
at async PostLikes.findOne (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\sequelize\lib\model.js:1240:12)
at async C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\routes\postlikes.js:18:36 {
name: 'SequelizeDatabaseError',
parent: Error: Unknown column 'likeId' in 'field list'
at Packet.asError (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\packets\packet.js:728:17)
at Query.execute (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\commands\command.js:29:26)
at Connection.handlePacket (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\connection.js:492:32)
at PacketParser.onPacket (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\connection.js:97:12)
at PacketParser.executeStart (C:\Users\admin\Desktop\코딩\NODE\4th Week\Sequelize-Relations (Lv.4)\node_modules\mysql2\lib\packet_parser.js:75:16)
at Readable.push (node:internal/streams/readable:234:10) {
at Readable.push (node:internal/streams/readable:234:10) {
code: 'ER_BAD_FIELD_ERROR',
errno: 1054,
sqlState: '42S22',
sqlMessage: "Unknown column 'likeId' in 'field list'",
sql: 'SELECT `likeId`, `postId`, `userId`, `createdAt`, `updatedAt` FROM `PostLikes` AS `PostLikes` WHERE (`PostLikes`.`postId` = 3 AND `PostLikes`.`userId` = 1) LIMIT 1;',
sql: 'SELECT `likeId`, `postId`, `userId`, `createdAt`, `updatedAt` FROM `PostLikes` AS `PostLikes` WHERE (`PostLikes`.`postId` = 3 AND `PostLikes`.`userId` = 1) LIMIT 1;',
parameters: undefined
},
sql: 'SELECT `likeId`, `postId`, `userId`, `createdAt`, `updatedAt` FROM `PostLikes` AS `PostLikes` WHERE (`PostLikes`.`postId` = 3 AND `PostLikes`.`userId` = 1) LIMIT 1;',
parameters: {}
}