0
任何人都可以解释我是它的错误还是功能?MariaDB执行重复密钥在Debian Stretch
- Debian的弹力
- MariaDB的服务器 - 26年1月10日
- MariaDB的客户端,26年1月10日
- MySQLdb的-1.2.5
这Python代码perfectlly工作在Debian的杰西,但在拉伸失败:
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
Python代码:
#!/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()
数据库:
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;
我想MariaDB的-10.2,在拉伸时pymysql但无论如何错误。
非常感谢!它的工作: '''INSERT INTO TEST2(ID,值) VALUES(%S,S) 对重复KEY UPDATE值= VALUES(值)''' 但我不明白为什么同样的代码适用于Wheezy和Jessie,但不适用于Stretch。我有相同版本的MySQLdb/pymysql。 可能的'mariadb-client-10.1'与'mariadb-client-10.1'有不兼容的变化。但我找不到什么信息。 –
我认为代码完全在客户端。听起来像拉伸是越野车?但是,这是一个操作系统的名称,对吗?操作系统不应该参与。如果是在Buster,写一个针对Debian的错误报告。 –