mysql - SQL 查询在 RDS 上不起作用
问题描述
使用 MySQL 5.6.40
这是表定义:
CREATE TABLE IF NOT EXISTS `updated_tables` (
`table_name` VARCHAR(50) NOT NULL,
`updated_at` TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
PRIMARY KEY (`table_name`),
UNIQUE INDEX `table_name_UNIQUE` (`table_name` ASC))
ENGINE = InnoDB;
这是查询(由 Sequalize 生成):
INSERT INTO `updated_tables` (`table_name`,`updated_at`) VALUES ('workdamnit',NULL) ON DUPLICATE KEY UPDATE `table_name`=VALUES(`table_name`), `updated_at`=VALUES(`updated_at`);
同一查询的简化形式:
INSERT INTO `updated_tables` (`table_name`,`updated_at`) VALUES ('workdamnit',NULL)
它在表中生成以下条目:
表名:workdamnit
更新时间:2018-07-05 14:27:17.142494
现在的问题。
在 AWS RDS 上使用 MySQL 5.6.39-log
给出此错误: 错误代码:1048。列“updated_at”不能为空
是因为 MySQL 版本有点不同,还是与 RDS 有关系?
解决方案
在创建表格期间,您在专栏中提到了以下内容updated_at
::
- 不允许
NULL
- 如果未提供任何内容,请使用
CURRENT_TIMESTAMP(6)
默认值。
因此,当您在查询中插入 NULL 时,它会给出错误。
所以,如果我理解你正在尝试做什么,这应该是你的查询:
INSERT INTO `updated_tables` (`table_name`) VALUES ('workdamnit')
代替
INSERT INTO `updated_tables` (`table_name`,`updated_at`) VALUES ('workdamnit',NULL)
希望能帮助到你
推荐阅读
- php - 在 [if condition] 中通过 php 更改内容
- c - C 中带有字符串的双指针/带有 malloc 的数组指针
- javascript - 在 Promise.all() 中自定义被拒绝的响应
- linux-kernel - 引导选项 noapic 和 noacpi 实际上是做什么的?
- shared-libraries - 共享库按什么顺序初始化和完成?
- ruby-on-rails - 使用 RMagick 将 PDF 文件转换为 PNG 并保持高质量的最佳方法是什么?
- java - 可以同时使用 Java 7 和 Java 8 和两个不同的应用程序吗?
- azure - 将多个 Office 365 租户帐户同步到单个 AD 域
- java - 在Java中生成任意长度的任意随机数
- python - 从 qtDesigner .ui 文件中读取 QWidgets 值到 python