누구나 나를 버그 또는 기능으로 설명 할 수 있습니까?MariaDB executemany가 데비안에서 중복 키를 사용함 Stretch
- 데비안 스트레치
- mariadb - 서버 10.1.26
- mariadb 클라이언트 - 10.1.26
- MySQLdb-1.2.5
이 파이썬 코드가 perfectlly 데비안 제시 작동 오류가있는 스트레치에서 오류가 발생했습니다.
Traceback (most recent call last):
File "bug_check.py", line 17, in <module>
cur.executemany(q, p)
File "/usr/local/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 255, in executemany
self.errorhandler(self, TypeError, msg)
File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
TypeError: not all arguments converted during string formatting
파이썬 코드 :
#!/usr/bin/python
# -*- coding: UTF-8 *
import MySQLdb
db = MySQLdb.connect(host='192.168.1.183', user='root', passwd='password', db='test', charset='utf8')
cur = db.cursor()
q = """INSERT INTO test2 (id, value)
VALUES (%s, %s)
ON DUPLICATE KEY
UPDATE value=%s
"""
p = [(1, 7, 7)]
# failed
cur.executemany(q, p)
# working
for i in p:
cur.execute(q, i)
db.commit()
db.close()
데이터베이스 : 나는 mariadb-10.2, pymysql 어쨌든 오류가 스트레치에서 발생 노력하고
CREATE TABLE `test2` (
`id` bigint(8) NOT NULL,
`value` float NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `test2`
ADD PRIMARY KEY (`id`);
ALTER TABLE `test2`
MODIFY `id` bigint(8) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
.
많은 감사! 일하고 : 이 '''TEST2 INTO INSERT (아이디, 값) VALUES (% s의 % s의) 중복 키 UPDATE 값 = 값에 대한 (값)''' 하지만 이해할 수없는 이유를 동일 코드는 Wheezy와 Jessie에서 작동하지만 스트레치에서는 작동하지 않습니다. 나는 MySQLdb/pymysql의 같은 버전을 가지고있다. 가능한'mariadb-client-10.1'은'mariadb-client-10.1'과 호환되지 않는 변경 사항을 가지고 있습니다. 하지만 뭔가 정보를 찾을 수 없습니다. –
나는이 코드가 전적으로 클라이언트 측에 있다고 생각한다. 스트레치 소리가 들리는가? 하지만 OS 이름이 맞습니까? OS가 관련되어서는 안됩니다. Buster에 있다면 데비안에 대한 버그 보고서를 작성하십시오. –