2015-11-10 4 views
5

上のトランザクション」とだけプロセスを再起動してみてください。しかし、MySQLコンソールから直接挿入しようとするとうまくいきます。データベースにPython3 - 'ロック待ちタイムアウトを超えました。私は特定のテーブルに挿入しようとするたびに、私は一貫し</p> <pre><code>(1205, 'Lock wait timeout exceeded; try restarting transaction') </code></pre> <p>エラーを取得していますPythonの使用データベース

SHOW FULL PROCESSLIST 

に見ると、他のアクティブなクエリを明らかにしません。これはライブアプリケーションがインストールされていないdevデータベースなので、私は何の問題も想像できません。ただし、本番データベースをホストするサーバー上で提供されているため、可能であればリセットを行わないことを強くお勧めします。これをデバッグする方法に関するアドバイス?

私は最終的には上記のメッセージで失敗しSHOW FULL PROCESSLISTを使用して、データベースに対して実行されたクエリを表示し、MySQLのコンソールから手動で挿入し、期待どおりに動作する場合。

INSERT INTO deals (user_ID, store_ID, storeChain_ID, title, dealSaving, 
dealDisclaimer, restriction, dealImage, dealURL, submit_ID, userProvider_ID, 
createDate, createDateTime, expirationDate, expirationDateTime, ZIP, STATE, 
city, businessType, DealType_ID, IP, rating, popular, dealSearchData, tag, 
submitName, provider_dealID) 
VALUES (NULL, 
     2651049, 
     NULL, 
     'Toronto East Community Arts Program', 
     'Three-Week Photography Workshop', 
     NULL, 
     NULL, 
     'https://a1.image.net/imgs/8423535b-bd3b-4e1e-afee-ab2869970a4c/700_q60.jpg', 
     'https://www.exmples.com/deals/1336374', 
     111, 
     1, 
     '2015-11-12', 
     '2015-11-12 10:01:58.282826', 
     '2015-11-17 09:59:59', 
     '2015-11-17 23:59:00', 
     'M4M 1K7', 
     'ON', 
     'Toronto', 
     NULL, 
     '1', 
     '127.0.0.1', 
     0, 
     144565, 
     'Three-Week Photography Workshop', 
     'Photography Class', 
     'Partner', 
     1336374) 

編集 次のようにされた提案を使用した例:

self.DB['master']['cursor'].execute("SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED") 
self.DB['master']['con'].commit() 
self.DB['master']['cursor'].execute(dealsquery,data) 
self.DB['master']['con'].commit() 
+0

あなたのpythonクエリを表示できますか? – Busturdust

+0

サンプルクエリを追加しました – user2694306

+0

複数のスレッドで作業しますか? –

答えて

0

を私はMySQLは「反復可能読み取りを使用しています信じてここでEDIT

は、クエリの例です。 "孤立、ロックを保持する、ENTIREトランザクション(別名コミット、私は信じているまで)。

はPythonのMySQLでコミット読み

cur = conn.cursor() cur.execute("SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED")

編集のようなものに設定され、「コミット読み取り」のように設定する別のアイソレーションを使用してみてください:分離レベルのために良い入門リソース http://vladmihalcea.com/a-beginners-guide-to-database-locking-and-the-lost-update-phenomena/

+0

私は実際の挿入ステートメントの前にこれを追加しようとしましたが、問題は依然として続きます。 – user2694306

+0

挿入する前に変更をコミットしましたか?また、続行する前に挿入をコミットしていますか? – Busturdust

+0

さて、すべてのインサートの後にコミットが続き、私もインサートの前にステートメントをコミットしようとしました。私は元の質問に例を追加しました – user2694306

4

それを別のコンポーネントが接続を行い、commit()ステートメントが欠落していました。

関連する問題

 関連する問題