これは私が知っている問題ですが、私は罠に陥りそうになりました(忘れそうになりましたが、幸いにもオンライン前にオンラインポイントを整理したときに思い出しました)ので、ここに特別に記録しました 自動インクリメント ID を更新する理由は何ですか?過去のビジネス上の問題により、ID のバッチを更新する必要があり、競合を避けるために、更新のために ID を数倍に拡張する必要がありました。テーブル内のデータ量は多くなく、読み取りが多く書き込みが少ない状況であるため、単純に 1000 ずつ拡張しました。 質問MySQL では、自動増分主キーをより大きな値に更新すると (たとえば、自動増分 ID の最大値が 1000 で、ID=49 のレコードを ID=1049 に更新すると)、MySQL はテーブルの自動増分値を更新後の値に変更しません。 DDL や再起動後など、場合によっては、業務がエラーを報告し始めます。 このとき、現在の操作を知らないと、現在の業務操作に問題があると誤解する可能性があります。 実際は、更新 ID によって埋められた落とし穴 (主キーの競合) が原因です。 図1: 更新前のオリジナルデータ 更新ステートメントを実行する テスト セット id = 2 の場合、テスト セット id = 10 を更新します。 図2: 更新されたデータ 新しい挿入ステートメントを実行する テスト(名前)値を挿入('dddd') 図3: 挿入された新しいデータ この時点で、誰もがこの問題に遭遇したことがあると思います。更新後、最初は問題がないかもしれませんが、自己増加 ID が更新した最大値に追いつくと、ID の競合は避けられません。 。 。 解決方法1. 個人的なテストライブラリの場合は重要ではありません。データベースを再起動できます。 テスト(id,name)値(20,'eeee')を挿入します。 操作後は図のようになります。 次のSQL文を実行して結果を比較します。 テスト(名前)値('ffff')を挿入します。 この時点で、自動インクリメント ID は最大値から増加し始めています。 情報を検索したところ、このバグは 2005 年に発生したが、パフォーマンスとシナリオが少ないために修正されなかったことがわかりました。この問題は、MySQL 8.0.11 では正常に動作します。 これで、Mysql の自動増分主キー ID の更新で発生した問題に関するこの記事は終了です。Mysql の自動増分主キー ID の更新に関する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: HTML テーブル_Powernode Java アカデミー
>>: 指定されたIEブラウザのレンダリング方法の詳細な理解
問題: IIS を通じて公開された Web サイトは F5 デバイスの背後に配置されています。透過的...
この記事の例では、Reactカプセル化グローバルポップアップボックスの具体的なコードを参考までに共有...
MySQL 5.0 は、いくつかの「高度な機能」があるため定番となっています。これは、Windows...
先ほど MySQL パスワードを設定したのに、外食したり荷物を受け取ったりするときにパスワードを忘れ...
丁寧に掃除を始めましょう!未使用ボリュームの一覧docker ボリューム ls -qf dangli...
目次1. 基本理論1.1 取引1.2 分散トランザクション2. 分散トランザクションソリューション2...
1. 同じIPアドレス、異なるポート番号仮想ホスト 1: ホスト IP アドレスは 172.16.3...
1. ビジネスシナリオ最近はファイルのアップロードやダウンロードに関する開発をしています。ダウンロー...
CSS を記述するときに、デザインに存在する重要なケースを忘れてしまうことがあります。たとえば、コン...
この記事では、参考までにVueのファイルのアップロードとダウンロードの具体的なコードを紹介します。具...
自社製品にクリック後1~2秒待機時間があるボタン(確認メールを送信する)があるため、クリック後の1~...
目次使用シナリオ解決1. globalDataを使用して実装する2. ローカルキャッシュストレージを...
アプリケーションシナリオデータ テーブルでは、アプリケーションは各データがいつ作成されたかを記録する...
1. 既存のモジュールを表示する nginx の sbin ディレクトリに nginx の sbin...
背景SQL クエリを実行するときに、where 条件の vachar 型フィールドの単一引用符を削除...