0

ローカルの MySQL Docker コンテナーと別の環境の RDS インスタンスの動作に違いがあります。このエラーと のさまざまなオプションに関するドキュメントを読みましたsql_mode。しかし、この違いがどこから来るのかはわかりませんでした。

  • まったく同じスクリプトを実行しています。
  • バージョンは同じ (MySQL 5.7.26) で、関連するすべてのパラメータは同じに見えます
  • ドッカー用にローカル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