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的錯誤報告。 –