原因を確認する手順
ターミナルで次のコマンドを実行して、プライマリキーの最大値を確認します。SELECT MAX(value_id) FROM catalog_product_entity_int;
max(value_id)
が max int(11) [ 4294967296 ]
よりも小さく、[ AUTO_INCREMENT ]
の値が max int(11) [ 4294967296 ]
以上の場合は、 テーブルの次の値に [ AUTO_INCREMENT ]
を更新することを検討してください。 それ以外の場合は、スキーマの更新 BIGINT
の INT
を検討します。
AUTO_INCREMENT
をテーブルの次の値に更新します
テーブルを変更する前に、データベースのバックアップを実行します。 また、サイトを メンテナンスモードにします。 また、変更を加えた後で、データベーステーブルに対して(変更が加えられたテーブルに対してのみ) MySQL optimize コマンドを実行することもできます。
特定のテーブルに対して optimize コマンドを実行している間は、サイトをメンテナンスモードにする必要があります。 これにより、テーブルが完全に再構築され、テーブルからデータが削除された後に領域が解放されます。
次の端子出力例に示すように、表示される値が max int(11) [ 4294967296 ]
より小さい場合は、max [ int(11) ]
の値より大きいか等しい数に変更され [ AUTO_INCREMENT ]
テーブルよりも小さい値になります。
MariaDB [xxx]> SELECT MAX(value_id) FROM catalog_product_entity_int;
+---------------------+
| MAX(source_item_id) |
+---------------------+
| 4283174130 |
+---------------------+
これが発生したかどうかを確認するには、ターミナルで次のコマンドを実行します。
MariaDB [xxx]> show create table catalog_product_entity_int;
...
) ENGINE=InnoDB AUTO_INCREMENT=4294967297 DEFAULT CHARSET=utf8 COMMENT='Catalog Product Integer Attribute Backend Table';
上記の例でわかるように、テーブル [ AUTO_INCREMENT ]
が max int(11) [ 4294967296 ]
よりも大きい数に変更されたことを出力します。 解決策は、テーブルの次の値に [ AUTO_INCREMENT]
を更新することです。
ALTER TABLE catalog_product_entity_int AUTO_INCREMENT = 4283174131;