2016-03-22 18 views
0

アップデートのmysqlの一部が値を更新しないことがあり、ランダムに表示されるという問題があります。原因を見つけることができません。キー値 "TRANSFER"を持つMYSQLエントリを受け取り、同じキー値を "EXECUTED"に設定します。時々私はうまく働く20のプロセスを持っています、時々私は10のプロセスがあり、半分は更新されません。基本的MySQLのアップデートが更新されない

try: 
    db = MySQLdb.connect(
     host='localhost', 
     user='root', 
     passwd='pw', 
     db='db', 
    ) 
    db.autocommit(True) 

except Exception as e: 
    sys.exit("Can't connect to db") 

cur = db.cursor() 
setstatus = "EXECUTED" 
for fn in os.listdir('.'): 
    if os.path.isfile(fn): 
     UUID = fn.replace(".ac", "") 
     try: 
      cur.execute(""" 
       UPDATE olorequest 
       SET status = %s 
       WHERE UUID = %s 
      """, (setstatus, UUID)) 
     except Exception as e: 
      raise IOError(e) 
     ftp.storlines('STOR ' + fn, open(fn, 'r+')) 
     try: 
      shutil.move(fn, executed_ac_files) 
     except Exception as e: 
      shutil.move(fn, error_files) 
      raise IOError(e) 
     time.sleep(5) 
+1

のは、ラインが(離れて、技術/接続の問題から)更新されない理由は2つの理由基本的に存在しているとしましょう: - 'WHERE' predicatが を満たしていなかった - 論理的な誤解は、あなたのプログラム にあります...これは実際には、同じです:) – butterFlyNick

+0

私はそれが実際にそれを修正したかもしれないと思います。 'UUID = fn.replace(" .ac "、" ")の後に' time.sleep(5) 'を追加しました。もし私がファイルを更新しても、ファイルはサーバ上でまだ名前が変更されていて、UUIDは' None' dB。私はいくつかのテストを実行しています、これまでのところありがとう:) –

+0

あなたは大歓迎です:) – butterFlyNick

答えて

1

行がUPDATE要求で更新されていない理由は、WHERE句の述語が満たされないことです。加えて、プログラムを介してこのアクションを実行するときにも、ロジックとその信頼性を確認してください。

関連する問題