2

ID を特定の auto_increment 開始値に設定するために、別のテーブルのデータを含むテーブルを作成したいと考えています。

これは、別のテーブルからのデータを入力したいテーブルです。

+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| id        | int(11)      | NO   | PRI | NULL    | auto_increment |
| city      | varchar(255) | YES  |     | NULL    |                |
| state     | varchar(255) | YES  |     | NULL    |                |
| state_id  | int(11)      | YES  |     | NULL    |                |
| city_slug | varchar(255) | YES  |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+

このクエリを実行した後:

alter table table_temp auto_increment = 40499;

ダミーの挿入を行う場合:

insert into table_temp (city, state, state_id, city_slug) values (1, 1, 1, 1);

期待どおりに動作します。つまり、ID は値 40499 で始まります。

select * from table_temp;

+-------+------+-------+----------+-----------+
| id    | city | state | state_id | city_slug |
+-------+------+-------+----------+-----------+
| 40499 | 1    | 1     |        1 | 1         |
+-------+------+-------+----------+-----------+

テーブルを切り捨て、auto_increment のテーブル変更クエリを再度実行した後、同じテーブルに別のテーブルのデータを入力しようとしました。

insert into table_temp (city, state, state_id, city_slug) select city, state, state_id, city_slug from final_location;

ただし、id はデフォルトの id 値 1 で始まります。

select * from table_temp limit 10;

+----+---------+---------+----------+-------------------+
| id | city    | state   | state_id | city_slug         |
+----+---------+---------+----------+-------------------+
|  1 | Abatiá  | Paraná  |      242 | all-cidade-abatia |
+----+---------+---------+----------+-------------------+

これを修正する方法について何か提案はありますか?

4

1 に答える 1

1

何が問題であるかを見つけました。テーブルを切り捨てた後、auto_increment開始値の参照が失われているようです。auto_increment値を再度正しく設定するには、altertableクエリを再度実行する必要がありました。

alter table table_temp auto_increment = 40499;
于 2013-03-08T08:26:29.003 に答える