0

我的本地 MySQL docker 容器和另一个环境中的 RDS 实例的行为存在差异。我已阅读有关此错误的文档以及sql_mode. 但我无法弄清楚这种差异来自哪里。

  • 我正在运行完全相同的脚本。
  • 版本相同(MySQL 5.7.26),所有相关参数看起来都一样
  • 在本地为 docker 我使用mysql:5.7默认命令的图像

我正在运行以重现该问题的脚本:

CREATE DATABASE `test_db`;
USE `test_db`;

SET SESSION `sql_mode`='STRICT_TRANS_TABLES';

CREATE TABLE `my_table` (
    `id` INT NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(50) NOT NULL,
    `date_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
    PRIMARY KEY (`id`)
);

SHOW SESSION VARIABLES WHERE variable_name = 'sql_mode';
/* outputs: sql_mode STRICT_TRANS_TABLES */

INSERT INTO `my_table` (`id`, `name`, `date_created`) VALUES (NULL, 'John', NULL);

SHOW WARNINGS;

本地主机上的结果

/* Affected rows: 1  Found rows: 0  Warnings: 0  Duration for 1 query: 0.000 sec. */

RDS 上的结果

/* SQL Error (1048): Column 'date_created' cannot be null */

显然它不是sql_mode参数而不是版本。这种行为上的差异还能从哪里来?

4

0 回答 0