行が1時間ごとに挿入されるテーブルがあります。この行には、id
、installation
、product_id
、およびhit_allowed
が含まれています。それらはすべて最初はmediumint
でした。しかし、数日前にid
が制限に達し、データ型をbigint
に変更する必要がありました。
しかし、それ以降、これらの行が入力されるスクリプトは、product_id
の入力を停止しました。スクリプトに変更は加えられていません。私もそのデータ型を変更する必要があるかどうか誰かに教えてもらえますか?
次のクエリを実行してください
SELECT product FROM mytable PROCEDURE ANALYSE();
PROCEDURE ANALYSE() は、最小値、最大値、および必要なデータ型を通知します。
Product_idがmediumintで、product_idの最大値が16777215の場合、最大値に達しました。 BIGINTではなくINTUNSIGNEDに変更します。
ALTER TABLE mytable MODIFY COLUMN product_id INT UNSIGNED NOT NULL;
別の方法で変更をインポートしてみてください。
CREATE TABLE pb_stat_rule_new LIKE pb_stat_rule;
ALTER TABLE pb_stat_rule_new MODIFY COLUMN product_id INT UNSIGNED NOT NULL;
INSERT INTO pb_stat_rule_new SELECT * FROM pb_stat_rule;
ALTER TABLE pb_stat_rule RENAME pb_stat_rule_old;
ALTER TABLE pb_stat_rule_new RENAME pb_stat_rule;
新しいファイルを試してください。それでも問題が解決しない場合は、これを元に戻すことができます。
ALTER TABLE pb_stat_rule RENAME pb_stat_rule_zap;
ALTER TABLE pb_stat_rule_old RENAME pb_stat_rule;
DROP TABLE pb_stat_rule_zap;