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: {}
}