eureka-ocu / chat_test

0 stars 0 forks source link

db, model回りで真っ赤っ赤ンゴ... #1

Open kentarohorie opened 8 years ago

kentarohorie commented 8 years ago

Unhandled rejection SequelizeDatabaseError: ER_BAD_FIELD_ERROR: Unknown column 'createdAt' in 'field list' at Query.formatError (/Users/horiekentarou/Desktop/js-workshop/my_chat_test/node_modules/sequelize/lib/dialects/mysql/query.js:175:14) at Query._callback (/Users/horiekentarou/Desktop/js-workshop/my_chat_test/node_modules/sequelize/lib/dialects/mysql/query.js:49:21) at Query.Sequence.end (/Users/horiekentarou/Desktop/js-workshop/my_chat_test/node_modules/mysql/lib/protocol/sequences/Sequence.js:85:24) at Query.ErrorPacket (/Users/horiekentarou/Desktop/js-workshop/my_chat_test/node_modules/mysql/lib/protocol/sequences/Query.js:94:8) at Protocol._parsePacket (/Users/horiekentarou/Desktop/js-workshop/my_chat_test/node_modules/mysql/lib/protocol/Protocol.js:280:23) at Parser.write (/Users/horiekentarou/Desktop/js-workshop/my_chat_test/node_modules/mysql/lib/protocol/Parser.js:74:12) at Protocol.write (/Users/horiekentarou/Desktop/js-workshop/my_chat_test/node_modules/mysql/lib/protocol/Protocol.js:39:16) at Socket. (/Users/horiekentarou/Desktop/js-workshop/my_chat_test/node_modules/mysql/lib/Connection.js:109:28) at emitOne (events.js:96:13) at Socket.emit (events.js:188:7) at readableAddChunk (_stream_readable.js:172:18) at Socket.Readable.push (_stream_readable.js:130:10) at TCP.onread (net.js:542:20)

一旦備忘がてらissueにしときます

nishitaniyuki commented 8 years ago

https://github.com/eureka-ocu/chat_test/commit/38ea3e1e7ab2883dc19d35c5a86286d00180b244

このコミットで直しておいたよ。

ドキュメントにも書いてあるんやけど、sequelize.defineでモデルの定義したら自動的にcreatedAtupdatedAtてプロパティを持つようになるみたい。今回はそれがDBのusersテーブルのカラムに追加できてなかったみたいやね。 マイグレーションで追加しておいたから、npm run db:migrateすると直るはず。

kentarohorie commented 8 years ago

今気づきました!!!!!! ありがとうございます!!!!

createdAt updatedAtを自分で追加せなあかんかったってことですか?

nishitaniyuki commented 8 years ago

せやね!じゃないと、ModelとDBのテーブルの整合性がとれへんからね!

ちなみにドキュメントにもあるけど、createdAtupdatedAtがほしくなかったら、下の様にModelを定義すればOK。

const someModel = sequelize.define('someModel', { ... }, {
    timestamps: false
});

片方だけほしい場合はこうする。

const someModel = sequelize.define('someModel', { ... }, {
    timestamps: true,
    createdAt: false
});
nishitaniyuki commented 8 years ago

今見て気づいたけど、npm run db:migrateじゃなくて、npm run sequelize db:migrateやな。

ちなみに、サーバーはnpm run startで起動するよ。