最近我完成了一个研究项目的申请,一切都很好,现在只剩下将应用程序投入生产中。
我正在使用Node.js和MySQL(我知道,我们不喜欢这个组合,但总得有人试试)。我有一个 socket,它会向 MySQL 的 Message 表中添加聊天消息,其中包含文本、日期时间等。日期时间设置为 new Date()
。
现在,当我将应用程序放在生产服务器上(重新安装依赖项、mysql 等)时,写消息时突然出现了以下错误:
Error: ER_TRUNCATED_WRONG_VALUE: Incorrect datetime value: '2017-06-01T09:45:06.253Z' for column 'message_datetime' at row 1
在开发中我没有遇到这个错误,于是我问自己是否下载了不同版本的mysql... 结果我确实下载了:
开发环境:
mysql Ver 14.14 Distrib 5.5.54, for debian-linux-gnu (i686) using readline 6.3
生产
mysql Ver 14.14 Distrib 5.7.18,用 EditLine 包装器在 Linux (x86_64) 上运行
消息表看起来像这样:
CREATE TABLE message (
message_id INT AUTO_INCREMENT,
message_sender_id VARCHAR(80) NOT NULL,
message_datetime DATETIME,
message_text TEXT,
message_chat_id INT NOT NULL,
PRIMARY KEY(message_id),
FOREIGN KEY(message_chat_id) REFERENCES chat(id)
ON DELETE CASCADE
) ENGINE=InnoDB;
那么有什么不同之处呢?为什么 'yyyy-mm-ddThh:mm:ss.%%%Z'
突然不是有效的日期格式了?我该如何解决这个问题?
感谢任何帮助!