うな重複したidを自動増加主キーのフィールド(mysql)?
-
21-08-2019 - |
質問
解決
の開発:問題は、以前のバージョンのコードも書面によるテーブルの使用マニュアルidの代わりに、自動車は増加.注自己:必ず確認してください他の場所のテーブルを書きます。
してきました重複キーを表示します。その取り付けられていないときに同じ時間(6時間以外).
テーブル構造
CREATE TABLE `table_1` (
`sales_id` int(10) unsigned NOT NULL auto_increment,
`sales_revisions_id` int(10) unsigned NOT NULL default '0',
`sales_name` varchar(50) default NULL,
`recycle_id` int(10) unsigned default NULL,
PRIMARY KEY (`sales_id`),
KEY `sales_revisions_id` (`sales_revisions_id`),
KEY `sales_id` (`sales_id`),
KEY `recycle_id` (`recycle_id`)
) ENGINE= MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=26759 ;
に挿入す:
insert into `table_1` ( `sales_name` ) VALUES ( "Blah Blah" )
またMySQL5.0.20とPHP5を使用mysql_insert_id()を取得するidを挿入し直後に挿入モードです。
解決
私はいくつかの重複キーエラーがあった突然、主キーが定義されており、AUTO_INCREMENTされていても、過去にMySQLデータベースに表示されます。テーブルが破損しているので、それがされている、毎回ます。
それは問題を公開する必要があり、チェックテーブルを実行する破損している場合。あなたが実行することによってこれを行うことができます:
CHECK TABLE tbl_name
それは(通常のサイズは、それが実際にあるべきよりも大きいと言うだろう)とにかくバックとして破損してくる場合は、ちょうどそれを修復するには、次を実行します:
REPAIR TABLE tbl_name
他のヒント
sales_idフィールドは、プライマリ(またはユニーク)キーを持っていますか?そうでない場合には、何か他のものは、おそらく再使用して、既存の数字である挿入や更新を行っています。そして、「他の何か」によって私は、コードを意味するものではありません。それは誤ってそれをやって、データベースへのアクセス権を持つ人間の可能性があります。
他は述べたように、あなたの例でそれは不可能です。
これは、あなたの質問には無関係だが、あなたは主キー列に対して個別のKEYを加える必要はありません - あなたはすでに独自の(主)キーを持っている場合、それはただのテーブルに追加のない、ユニークなインデックスを追加しています。
私たちは、テーブル内の重複キーを取得している。
あなたが挿入しようとして、あなたがエラーを取得しているわけですか、またはあなたが複数回列に格納されているいくつかの値を持っている意味ですか?
自動インクリメントだけで、あなたのINSERTから列を省略するか、NULLまたはゼロ挿入しようとするときにキック。そうしないと、過剰に乗っ自動インクリメントのメカニズムを、INSERT文で値を指定することができます。たとえばます:
INSERT INTO table_1 (sales_id) VALUES (26759);
すでに指定した値がテーブルに存在する場合は、は、あなたがエラーを取得します。
このクエリの結果を投稿してください。
SELECT `sales_id`, COUNT(*) AS `num`
FROM `table_1`
GROUP BY `sales_id`
HAVING `num` > 1
ORDER BY `num` DESC
また独自のキーその他分野れることがありますので、最新の問題です。
場合最高価値のauto_incrementカラムはMySQLまないように再度セットしてください。例えば、sales_idたbitカラムだが複製キーの誤り後に達したid127となります。