Amazon Associates Link Builder で挿入したリンクがいつの間にか文字化けしていた。
リンクを作成した直後は文字化けしていなかったのでキャッシュが無くなったタイミングなんかで文字化けするのかと考え、データベースの文字コードを確認したところwp_Aalb_Asin_Responseテーブルの文字コードがlatin1だった。
ALTER TABLEしたところで文字化けしているデータは直らないのでテーブルをDROPして文字コードをutf8mb4にしたテーブルを作成した。
DROP TABLE `wp_Aalb_Asin_Response`;
CREATE TABLE `wp_Aalb_Asin_Response` (
`asin` varchar(10) NOT NULL,
`marketplace` varchar(5) NOT NULL,
`item_lookup_response` text,
`last_updated_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`last_access_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`asin`,`marketplace`),
KEY `index_last_updated_time` (`last_updated_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
実行してみると次のようなエラーになる。
ERROR 1067 (42000): Invalid default value for ‘last_updated_time’
`timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00’`の部分が良くないらしい。
SQLモードを変更する。
SET sql_mode = '';
このあと同じCREATE文を実行して完了。