2016-12-18 5 views
2

idカラムに厳密な主キー数値シーケンスを維持する必要があるデータベースがあります。私はその後、使用して再集計し、インクリメントのリセットを行う必要がある行を削除するとき、すなわち等の1、2、3、4、5、テーブルのAUTO_INCREMENTをPHPでリセット

は今:

SET @count = 0; 
UPDATE `Main` 
SET `id` = @count:= @count + 1; 
ALTER TABLE Main 
AUTO_INCREMENT =1; 

をに入力したとき、これは正常に動作しますMySQLのコマンドラインとはまったく同じですが、PHPスクリプトコマンドから実行する必要があります。私が使用します。

$sql="SET @count = 0"; 
$result=$database->query($sql); 
$sql="UPDATE Main SET id = @count:= @count + 1"; 
$result=$database->query($sql); 
$sql="ALTER TABLE Main AUTO_INCREMENT =1"; 
$result=$database->query($sql); 

は今最初の二つの再集計ラインが正常に動作しますがAUTO_INCREMENTラインは、自動インクリメントカウンタはリセットされません。再び"ALTER TABLE Main AUTO_INCREMENT =1;"は、MySQLコマンドラインからは正常に動作しますが、PHPスクリプトでは正常に動作しません。

注:データベースはmysqli_queryコマンドを使用します。

+2

[MySQLでの削除後の自動インクリメント]の複製の可能性があります(http://stackoverflow.com/questions/2214141/auto-increment-after-delete-in-mysql) – Jigar

+0

これらをすべて同じ行で実行してみてください: AUTO_INCREMENT = 1; "' '' –

+0

いいえ、私はこれを前に試してみました。もう一度やり直してください。しかし、それは主キーの再計算もしません。 – Greg

答えて

0

私はそれを見つけました。 AUTO_INCREMENTは "information_schema.tables"データベースにあり、ユーザはこのテーブルに対して "USAGE"権限しか持っていませんでした。付与された "ALTER"特権を使用すると、正常に動作します。おかげさまで

関連する問題