2011-08-12 17 views
0

mysqlに興味深い問題がありますか?私は、プライマリキーが自動インクリメントであるテーブルセットを持っています。最近、私は間違いを犯し、Webサイトを介して行うのではなく、phpmyadminを使って手動で18レコードを追加しなければなりませんでした。ここで起こったことは、mysqlがテーブルのレコード数と最後のIDとの間に不一致があることです。つまり、mysqlはテーブルに6935のレコードを格納していますが、テーブルの最後のエントリのIDは6917です。mysqlがカウントしている余分なレコードはどこにも存在しません。誰が問題が何であるか知っていますか?これはMySQLのバグですか?またはどこかで混乱しましたか?MySQLの行数が最後に入力した値と一致しません

+0

「COUNT(*)FROM yourTable」は何を返しますか? – Jacob

+2

どこから6935番号を取得しますか? MySQLでテーブルの行数を取得する方法はたくさんありますが、すべてが正確ではありません。 – Mchl

+0

おそらくauto_increment列の値を手動で追加しましたか? auto_incrementは、列の値が定義されていない場合に実行されます(0またはNULL)。 –

答えて

0

はデータが入力されているかどうか、あなたが最初にチェックすべき

1)mysqlのにはバグ...はありません。

2)テーブルから削除されたデータがないかどうかを確認する必要があります。短くすると、すべてのauto incをチェックする必要があります。データは1から始まり順番になっていますか?

+9

まあ... mysqlにはバグがたくさんありますが、これは一つではありません。 –

2

idカラムはauto_incrementなので、レコードを削除するとギャップがあります。

+0

最高のauto_increment IDが報告された行数よりも低い場合の状況をどのように考慮しますか?通常、それは逆の方法です。 – Mchl

+1

場合によっては、レコードが挿入されて物理的にIDを設定していると、自動インクリメントに影響する可能性があります。つまり削除してから、削除されたばかりの行IDに再挿入したいユーザーです。誰もが知っているように、いいえ。 – Brian

+0

@Brian ...私はレコードを一切削除しませんでした.Sqlを使ってレコードセットを挿入しました。今私はmysqlのカウントが私に6935のレコードを与える状況がありますが、最後に挿入されたi.dは6917です。レコードの数を取得するために 'select count(*)from table'を使用しています。興味深いのは、矛盾が挿入したレコードの数と等しいことです! –

関連する問題