저장을 습관화
에러 기록 - SequelizeDatabaseError, sqlMessage: "Unknown column 'postId' in 'field list'" 본문
공부/node.js
에러 기록 - SequelizeDatabaseError, sqlMessage: "Unknown column 'postId' in 'field list'"
ctrs 2023. 6. 29. 00:19- 증상
게시글 내용 수정 API 작성 중
의도하지 않은 컬럼 'postId'에 접근하여 에러가 발생함
하지만 작성한 코드에는 객체로써 생성한 postId 이외에는 postId에 대한 내용이 들어있지 않은 상태
Executing (default): SELECT `id`, `title`, `content`, `userId`, `likes`, `createdAt`, `updatedAt`, `postId` FROM `Posts` AS `Post` WHERE `Post`.`id` = '1';
node:internal/process/promises:288
triggerUncaughtException(err, true /* fromPromise */);
^
Error
at Query.run (C:(생략)\node_modules\sequelize\lib\dialects\mysql\query.js:52:25)
at C:(생략)\node_modules\sequelize\lib\sequelize.js:315:28
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async MySQLQueryInterface.select (C:(생략)\node_modules\sequelize\lib\dialects\abstract\query-interface.js:407:12)
at async Post.findAll (C:(생략)\node_modules\sequelize\lib\model.js:1140:21)
at async Post.findOne (C:(생략)\node_modules\sequelize\lib\model.js:1240:12)
at async C:(생략)\routes\posts.js:93:16 {
name: 'SequelizeDatabaseError',
parent: Error: Unknown column 'postId' in 'field list'
at Packet.asError (C:(생략)\node_modules\mysql2\lib\packets\packet.js:728:17)
at Query.execute (C:(생략)\node_modules\mysql2\lib\commands\command.js:29:26)
at Connection.handlePacket (C:(생략)\node_modules\mysql2\lib\connection.js:492:32)
at PacketParser.onPacket (C:(생략)\node_modules\mysql2\lib\connection.js:97:12)
at PacketParser.executeStart (C:(생략)\node_modules\mysql2\lib\packet_parser.js:75:16)
at Socket.<anonymous> (C:(생략)\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 'postId' in 'field list'",
sql: "SELECT `id`, `title`, `content`, `userId`, `likes`, `createdAt`, `updatedAt`, `postId` FROM `Posts` AS `Post` WHERE `Post`.`id` =
'1';",
parameters: undefined
},
original: Error: Unknown column 'postId' in 'field list'
at Packet.asError (C:(생략)\node_modules\mysql2\lib\packets\packet.js:728:17)
at Query.execute (C:(생략)\node_modules\mysql2\lib\commands\command.js:29:26)
at Connection.handlePacket (C:(생략)\node_modules\mysql2\lib\connection.js:492:32)
at PacketParser.onPacket (C:(생략)\node_modules\mysql2\lib\connection.js:97:12)
at PacketParser.executeStart (C:(생략)\node_modules\mysql2\lib\packet_parser.js:75:16)
at Socket.<anonymous> (C:(생략)\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 'postId' in 'field list'",
sql: "SELECT `id`, `title`, `content`, `userId`, `likes`, `createdAt`, `updatedAt`, `postId` FROM `Posts` AS `Post` WHERE `Post`.`id` = '1';",
parameters: undefined
},
sql: "SELECT `id`, `title`, `content`, `userId`, `likes`, `createdAt`, `updatedAt`, `postId` FROM `Posts` AS `Post` WHERE `Post`.`id` = '1';",
parameters: {}
}
Node.js v18.16.0
[nodemon] app crashed - waiting for file changes before starting...
- 원인
아직 파악하지 못했음
- 해결 방법
attibutes를 작성하여 접근한 컬럼을 지정해 줬음
router.put('/:postId', async (req, res) => {
const { postId } = req.params;
const { title, content } = req.body;
const post = await Post.findOne({
where: { id: postId },
attributes: ['id', 'title', 'content', 'createdAt', 'userId', 'likes'],
});
...(중략)
try {
await Post.update(
{ title, content }, // 수정할 컬럼 및 데이터
{
where: { id: postId },
attributes: ['id', 'title', 'content', 'createdAt', 'userId', 'likes'],
}
);
return res.status(200).json({ message: '게시글이 수정되었습니다.' });
} catch (error) {
return res
.status(400)
.json({ errorMEssage: '게시글 수정에 실패하였습니다.' });
}
});
'공부 > node.js' 카테고리의 다른 글
sequelize - config.json 설정 없이 명령어로 DB 삭제하기 (0) | 2023.07.07 |
---|---|
게시글 조회 API 작성 중 "404 존재하지 않는 게시글입니다." 만들려면 (0) | 2023.06.29 |
에러 기록 - TypeError: Cannot read properties of undefined (reading 'create') (0) | 2023.06.29 |
에러 기록 - JsonWebTokenError: invalid signature (0) | 2023.06.22 |
.toHexString() (0) | 2023.06.19 |