반응형
업데이트를 위한 mariadb가 올바르게 작동하지 않습니다.
python mysqldb로 업데이트하기 위해 mariadb를 테스트하고 있었는데 제게 제대로 작동하지 않습니다.두 개의 파이썬 스크립트를 cronjob으로 동시에 실행할 때 동일한 행이 두 번 표시됩니다.내가 두 개의 mysql 콘솔에서 테스트를 하면 모든 것이 잘 됩니다.innodb를 사용합니다.내 코드:
cursor.execute("start transaction")
cursor.execute("SELECT id FROM t1 where tw1=2 AND tw2=1 AND tw3=3 order by id limit 1000 FOR UPDATE")
rows = [r for r in cursor.fetchall()]
ids = []
for row in rows:
ids.append(str(row['id']))
for i in range(2):
cursor.execute("SELECT id FROM t2 where tw1="sth" AND tw2 =0 AND tw3=0 LIMIT 1 FOR UPDATE")
d = cursor.fetchone()
if not d:
#here: insert to t2 and get last id as d_id
cursor.execute("update t2 SET tu1=1,tu2=500,tu3=0 WHERE id = %s" % d_id)
for row in rows:
#job with rows
cursor.execute( "Update t1 SET tw1=tw1+1 WHERE id IN (" + ','.join(ids) + ")")
cursor.execute("commit")
t1부터 tw1은 최대 3이어야 하지만 매우 자주 4입니다.ID를 파일에 입력하면 두 개의 다른 프로그램 실행에 대해 동일한 ID가 있음을 알 수 있습니다.내가 뭘 잘못하는 거지?
언급URL : https://stackoverflow.com/questions/33808524/mariadb-for-update-doesnt-work-correctly
반응형
'programing' 카테고리의 다른 글
| sql 코드 문제, 하나의 행만 반환 (0) | 2023.09.06 |
|---|---|
| Spring Rest Template + Spring Web MVC를 이용한 멀티파트 파일 업로드 (0) | 2023.09.06 |
| Oracle 10g에서 ROW_MOVEMENT를 활성화/비활성화하면 어떤 영향을 받습니까? (0) | 2023.09.06 |
| 스프링 주입값을 정적 장으로 만드는 방법 (0) | 2023.09.06 |
| 3.0 데이터를 문자열로 신속하게 이동할 수 있습니까? (0) | 2023.09.06 |