スクリーンショットに示されているように、これはエラーコード1293
です。このエラーの理由は、MySQLの実装の詳細にあるようです。
タイプの列を使用して回避することはできますDATETIME
が、これでは現在の時刻を値として設定できませんdefault
。ただし、これはアプリケーションコードで、またはトリガーを使用して解決できます。サンプルテーブル(と呼ばれるdatetimetest
)を使用して、次のようなトリガーを追加しました。
データベーススキーマ:
CREATE TABLE `datetimetest` (
`id` int(11) NOT NULL,
`created` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TRIGGER trigger_SetCreated
BEFORE INSERT ON datetimetest
FOR EACH ROW SET NEW.created = UTC_TIMESTAMP();
に設定される列が1つしかないためmodified
、トリガーを使用してフィールドに対して同じことを行うか、ソリューションを維持することができます。BEFORE UPDATE
TIMESTAMP
CURRENT_TIMESTAMP
ON UPDATE