自動インクリメントされた主キーを持つMySQLのメモリ内テーブルを使用しています。
MySQL を再起動すると、インメモリ テーブルが期待どおりに空になります。
ただし、自動インクリメント値を保持して、次に挿入される行が最後のセッションで使用された後の ID を持つようにしたいと考えています。
それは可能ですか?
自動インクリメントされた主キーを持つMySQLのメモリ内テーブルを使用しています。
MySQL を再起動すると、インメモリ テーブルが期待どおりに空になります。
ただし、自動インクリメント値を保持して、次に挿入される行が最後のセッションで使用された後の ID を持つようにしたいと考えています。
それは可能ですか?
再起動後、このステートメントを使用して、AUTO_INCREMENT
列に使用する次の値を変更できます。
ALTER TABLE mytable AUTO_INCREMENT = new_value;
構文は似ていCREATE TABLE
ますが、メモリ テーブルは再起動後に再作成されるため、あまり役に立ちません。
この呼び出しのタイミングが重要な場合は、起動スクリプトに追加することをお勧めします。私は他の方法を知りません。
ALTER TABLE
初期自動増分を計算するための関数が必要だったため、ステートメントを使用できませんでした。
解決策は次のとおりです。
my.cnf
[mysqld]
追加したヘッダーの後にファイルが変更されましたinit-file = [file_path]
ファイルは、ダミー値を使用してテーブルに挿入を実行します(たとえばINSERT INTO mytable(id) VALUES (UNIX_TIMESTAMP())
、この後、必要に応じて行を削除できます。