したがって、私のMySQLデータベースは少しおかしな振る舞いをしています。これは私のテーブルです:
Name shares id price indvprc
cat 2 4 81 0
goog 4 4 20 20
fb 4 9 20 20
テーブルに挿入しようとすると、この#1062エラーが発生します。そのため、さらに調べて、名前と共有の値が同じであるテーブルに値を挿入しようとすると、#1062エラーが返されることに気付きました。たとえば、私が挿入した場合:
fb 4 6 20 20
エラーが返されます。しかし、共有数を6に変更すると、正常に実行されます。それは、一意である可能性のある私の列の1つによるものですか、それともmysqlにあるものですか
PRIMARY KEY
としてshares
を削除する必要がありますOR UNIQUE_KEY
つかいます SHOW CREATE TABLE your-table-name
どの列を確認しますis主キー。
PRIMARY KEY
が選択されましたAUTO_INCREMENT
。ALTER TABLE [table name] AUTO_INCREMENT = 1
「lock」プロパティを「shared」から「exclusive」に変更することで解決しました。
ALTER TABLE `table`
CHANGE COLUMN `ID` `ID` INT(11) NOT NULL AUTO_INCREMENT COMMENT '' , LOCK = EXCLUSIVE;
正確なエラーメッセージとは何ですか? #1062は、列の主キー制約に違反する重複エントリを意味します。つまり、列に同じ値を2つ持つことはできません。エラーメッセージは、どの列が制約されているかを示しているはずです。「共有」を推測しています。
おそらくこれは最善の解決策ではありませんが、次のことを行うと問題が解決します
ステップ1:次のコマンドを使用してデータベースダンプを取得します
mysqldump -u root -p databaseName > databaseName.db
行を見つける
ENGINE=InnoDB AUTO_INCREMENT="*****" DEFAULT CHARSET=utf8;
ステップ2:*******
をmysqlテーブルIDの最大IDに変更します。この値を保存します。
ステップ3:再び使用する
mysql -u root -p databaseName < databaseName.db
私の場合、他のテーブルにデータを入力するために使用する手動エントリを追加すると、このエラーが発生しました。 mysqlコマンドを使用して値AUTO_INCREMENT
をmax idに設定する方法
ドメインプロバイダーのcpanelでデータベースを修復します。
または、phpMyAdminで何かをマージしていないかどうかを確認します