問題タブ [mysql-error-1205]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pythonとmysqlコマンドラインの両方でmysql挿入エラー
いくつかの項目を mysql db に挿入したいと考えています。
Pythonスクリプトでそれを行ったとき、次のようになりました。
エラー 1062: キー 'product_code' のエントリ '222' が重複しています。product_code は一意のフィールドです。
私がmysqlコマンドラインでそれをしたとき、私は得ました:
エラー 1205(HY000):ロック待機タイムアウトを超えました。トランザクションを再開してみてください。
Mysql は win32 にインストールされています。テーブルのエンジンは innodb です。
コード:
mysql-error-1205 - MySQL エラー コード 1205: 同じ ID を持つ複数の行を削除しようとすると、ロック待機タイムアウトを超えました
テーブルから同じ ID を持つ複数の行を削除しようとすると、「ロック待機タイムアウトがエラーを超えました...」というメッセージ (コード 1205) が表示されます。DELETE の代わりに SELECT を使用すると、クエリは正常に機能し、削除したい行が返されます。これは私のクエリです
同じ list_id に対して複数の行があるため、主キー/インデックスを使用できません。インターネットで解決策を見つけるのに何時間も費やしましたが、何の喜びもありませんでした。誰か助けてくれませんか!? ありがとう
mysql - 1205 エラー: テーブルは長時間ロックされたままです
自分のコンピューターのMysqlワークベンチで実行したクエリがあり、データベースはリモートコンピューターにあります。
しばらくすると、2013 エラー (クエリ中に MySQL サーバーへの接続が失われました) が発生しましたが、クエリの影響はありませんでした。後でいくつかの異なるクエリを試しましたが、常に次の結果が得られました。
これは、(接続が失われたときに) 実行したクエリがまだテーブルをロックしていることを意味しますか? もしそうなら、どうすればテーブルを解放できますか? 最初のクエリから 3 時間が経過しました。
show show processlist の出力で、2013 エラーが発生した最初のクエリは ID 1205 のものです。
mysql - Magento SQLSTATE [HY000]: 一般エラー: 1205 ロック待機タイムアウトを超えました。トランザクションを再開してみてください
最近、大規模な 32Gig データベースのコピーを作成して、開発環境に使用しました。アイテムを作成、削除、更新しようとすると、このエラーが発生します。
SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction
コピーが正しく行われず、一部のテーブルがロックされているのではないかと考えています。
問題のデータベースはtest_dev2
、私の開発環境で使用されているものです。プロセスを強制終了しようとしましたがtest_dev2
、それでも同じエラーが発生しました。
MySQLサービスも再起動しましたが、それでも同じエラーが発生しました。
innodb_lock_wait_timeout
それから私は120
に増加しました
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 120 |
+--------------------------+-------+
このコマンドを実行すると、次のようになりますSHOW OPEN TABLES WHERE In_use > 0;
+-----------+------------------+--------+-------------+
| Database | Table | In_use | Name_locked |
+-----------+------------------+--------+-------------+
| test_dev2 | core_url_rewrite | 1 | 0 |
+-----------+------------------+--------+-------------+
1205 Lock wait timeout exceeded
このエラーを修正する方法について何かアイデアはありますか?
python - Pythonを使用して大きなテーブルから大量のレコードを効率的に削除する方法
(created_at 列によると) 10 日よりも「古い」レコードを削除する必要がある大きなテーブル (約 1,000 万行) があります。これを行うために実行するpythonスクリプトがあります。created_at は varchar(255) であり、次のような値を持ちます1594267202000
このスクリプトを実行すると、DELETE QUERY が実行されますが、次の理由で失敗します。
削除に失敗しました: 1205 (HY000): ロック待機タイムアウトを超えました。トランザクションを再開してみてください
innodb_lock_wait_timeoutが現在 50 秒に設定されていることはわかっていますが、この問題を解決するためにそれを増やすことができますが、タイムアウトには触れたくないので...基本的にチャンクで削除したいですか? 私のコードを例として使用して、ここでそれを行う方法を知っている人はいますか?