인프런 커뮤니티 질문&답변

정민교님의 프로필 이미지
정민교

작성한 질문수

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

게시글, 이미지 업로드하기

Unkown column 'Post.UserId' in 'field list'

작성

·

628

0

rendermain
Executing (default): SELECT `Post`.`id`, `Post`.`content`, `Post`.`img`, `Post`.`createdAt`, `Post`.`updatedAt`, `Post`.`UserId`, `User`.`id` AS `User.id`, `User`.`nick` AS `User.nick` FROM `posts` AS `Post` LEFT OUTER JOIN `users` AS `User` ON `Post`.`UserId` = `User`.`id` AND (`User`.`deletedAt` IS NULL) ORDER BY `Post`.`createdAt` DESC;
Error
    at Query.run (C:\Users\user\study\nodejs\nodebird\node_modules\sequelize\lib\dialects\mysql\query.js:52:25)
    at C:\Users\user\study\nodejs\nodebird\node_modules\sequelize\lib\sequelize.js:315:28
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async MySQLQueryInterface.select (C:\Users\user\study\nodejs\nodebird\node_modules\sequelize\lib\dialects\abstract\query-interface.js:407:12)
    at async Function.findAll (C:\Users\user\study\nodejs\nodebird\node_modules\sequelize\lib\model.js:1140:21)
    at async exports.renderMain (C:\Users\user\study\nodejs\nodebird\controllers\page.js:16:23) {
  name: 'SequelizeDatabaseError',
  parent: Error: Unknown column 'Post.UserId' in 'field list'
      at Packet.asError (C:\Users\user\study\nodejs\nodebird\node_modules\mysql2\lib\packets\packet.js:728:17)
      at Query.execute (C:\Users\user\study\nodejs\nodebird\node_modules\mysql2\lib\commands\command.js:29:26)
      at Connection.handlePacket (C:\Users\user\study\nodejs\nodebird\node_modules\mysql2\lib\connection.js:489:32)
      at PacketParser.onPacket (C:\Users\user\study\nodejs\nodebird\node_modules\mysql2\lib\connection.js:94:12)
      at PacketParser.executeStart (C:\Users\user\study\nodejs\nodebird\node_modules\mysql2\lib\packet_parser.js:75:16)
      at Socket.<anonymous> (C:\Users\user\study\nodejs\nodebird\node_modules\mysql2\lib\connection.js:101:25)
      at Socket.emit (events.js:400:28)
      at addChunk (internal/streams/readable.js:293:12)
      at readableAddChunk (internal/streams/readable.js:267:9)
      at Socket.Readable.push (internal/streams/readable.js:206:10) {
    code: 'ER_BAD_FIELD_ERROR',
    errno: 1054,
    sqlState: '42S22',
    sqlMessage: "Unknown column 'Post.UserId' in 'field list'",
    sql: 'SELECT `Post`.`id`, `Post`.`content`, `Post`.`img`, `Post`.`createdAt`, `Post`.`updatedAt`, `Post`.`UserId`, `User`.`id` AS `User.id`, `User`.`nick` AS `User.nick` FROM `posts` AS `Post` LEFT OUTER JOIN `users` AS `User` ON `Post`.`UserId` = `User`.`id` AND (`User`.`deletedAt` IS NULL) ORDER BY `Post`.`createdAt` DESC;',
    parameters: undefined
  },
  original: Error: Unknown column 'Post.UserId' in 'field list'
      at Packet.asError (C:\Users\user\study\nodejs\nodebird\node_modules\mysql2\lib\packets\packet.js:728:17)
      at Query.execute (C:\Users\user\study\nodejs\nodebird\node_modules\mysql2\lib\commands\command.js:29:26)
      at Connection.handlePacket (C:\Users\user\study\nodejs\nodebird\node_modules\mysql2\lib\connection.js:489:32)
      at PacketParser.onPacket (C:\Users\user\study\nodejs\nodebird\node_modules\mysql2\lib\connection.js:94:12)
      at PacketParser.executeStart (C:\Users\user\study\nodejs\nodebird\node_modules\mysql2\lib\packet_parser.js:75:16)
      at Socket.<anonymous> (C:\Users\user\study\nodejs\nodebird\node_modules\mysql2\lib\connection.js:101:25)
      at Socket.emit (events.js:400:28)
      at addChunk (internal/streams/readable.js:293:12)
      at readableAddChunk (internal/streams/readable.js:267:9)
      at Socket.Readable.push (internal/streams/readable.js:206:10) {
    code: 'ER_BAD_FIELD_ERROR',
    errno: 1054,
    sqlState: '42S22',
    sqlMessage: "Unknown column 'Post.UserId' in 'field list'",
    sql: 'SELECT `Post`.`id`, `Post`.`content`, `Post`.`img`, `Post`.`createdAt`, `Post`.`updatedAt`, `Post`.`UserId`, `User`.`id` AS `User.id`, `User`.`nick` AS `User.nick` FROM `posts` AS `Post` LEFT OUTER JOIN `users` AS `User` ON `Post`.`UserId` = `User`.`id` AND (`User`.`deletedAt` IS NULL) ORDER BY `Post`.`createdAt` DESC;',
    parameters: undefined
  },
  sql: 'SELECT `Post`.`id`, `Post`.`content`, `Post`.`img`, `Post`.`createdAt`, `Post`.`updatedAt`, `Post`.`UserId`, `User`.`id` AS `User.id`, `User`.`nick` AS `User.nick` FROM `posts` AS `Post` LEFT OUTER JOIN `users` AS `User` ON `Post`.`UserId` = `User`.`id` AND (`User`.`deletedAt` IS NULL) ORDER BY `Post`.`createdAt` DESC;',
  parameters: {}
}
GET / 500 25.038 ms - 2481
GET /main.css 200 2.256 ms - 2609
exports.renderMain = async (req, res, next) => {
    console.log('rendermain')
    try {
        const posts = await Post.findAll({
            include: {
                model: User,
                attributes: ['id', 'nick'],
            },
            order: [['createdAt', 'DESC']] // 최신순 정렬(작성일 기준 내림차순)
        });
        console.log(posts);
        res.render('main', {
            title: 'NodeBird',
            twits: posts
        });
    } catch (error) {
        console.error(error);
        next(error);
    }
};

안녕하세요 선생님

npm run start 서버 띄우고 localhost:8001 로 갔을 때 나오는 에러 입니다.

사진도 같이 띄웁니다.

controller/page.js 에서 16번째 줄에서 에러가 발생하길래 확인하였는데

위 에러 코드에서 보이듯이 sql문에 Post테이블의 UserId 컬럼이 포함되어 있었습니다.

Post 테이블 만들 때 UserId 컬럼을 명시한 적이 없는데 왜 sql 문에 포함되었는지 잘 이해가 안 갑니다ㅠㅠ

답변 2

0

정민교님의 프로필 이미지
정민교
질문자

force: true 옵션으로 테이블 다시 만들었습니다

화면 멀쩡하게 잘 나옵니다 선생님ㅠ

테이블도 잘 생성되었습니다.

정말 감사합니다 ㅠㅠ 두 시간을 해멨는데 한 번에 해결해주셨네요 감사합니다.

0

정민교님의 프로필 이미지
정민교
질문자

공식 홈페이지에서 찾았습니다.

belongToMany 했을 때 자동으로 foreignkey가 생성된다고 나옵니다.

    static associate(db) {
        db.Post.belongsTo(db.User);
        db.Post.belongsToMany(db.Hashtag, {through: 'PostHashtag'});
    }

associate에서 belongsTo메서드 실행했는데 Post테이블에 UserId라는 컬럼이 생성되지 않았습니다...

어느 부분이 문제인지 잘 모르겠습니다.

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

이미 Post 테이블이 잘못 만들어져있는 것 아닌가요? 지우고 다시 해보세요.

정민교님의 프로필 이미지
정민교

작성한 질문수

질문하기