MariaDB 10.2.2を使用していますが10.2.3以降では、このようなGENERATED ALWAYSの列のテーブルを作成する際にエラーが出るようになってしまいました。
CREATE TABLE `<table_name>` ( `ID` BIGINT UNSIGNED NOT NULL DEFAULT NULL AUTO_INCREMENT, `CODE` CHAR(4) GENERATED ALWAYS AS (trim(lpad(`ID`,4,'0'))) VIRTUAL, `CREATED_AT` DATETIME, `UPDATED_AT` DATETIME, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ID
は初期化されていないというエラーなので何かAUTO_INCREMENTあたりの処理が変わったのかと思われます。
ENERATED ALWAYSの列はAUTO_INCREMENTのPRIMARY KEYの列を使うべきではないのでしょうが、10.2.2では何も問題なく使用できていたので互換的にこのまま使うことはできないのでしょうか?
sql_modeは
STRICT_TRANS_TABLES,STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO,ONLY_FULL_GROUP_BY,PIPES_AS_CONCAT
です。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/10 15:59