誰かが私にそれをバグか機能と説明できますか?MariaDB executemanyはDebian Stretchの重複キーにあります
- Debianのストレッチ
- mariadb-サーバ10.1.26
- mariadb-クライアント10.1.26
- の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;
私は、pymysqlをmariadb-10.2をしようとしていますが、いずれにしてもエラーがストレッチで発生します。
多くの感謝! DUPLICATE KEY UPDATE値= VALUES(値) '' ' ON ' '' TEST2。INSERT INTO(ID、値) VALUES(%sの%sの)しかし、なぜ同じ、私は理解していない:それは働いていますコードはWheezyとJessieで動作しますが、Stretchでは動作しません。私はMySQLdb/pymysqlの同じバージョンを持っています。 'mariadb-client-10.1'は' mariadb-client-10.1'と互換性がありません。しかし、私は何か情報を見つけることができませんでした。 –
私はコードが完全にクライアント側にあると思います。ストレッチのような音がバギーですか?しかし、それは正しいOS名ですか? OSは関与すべきではありません。 Busterにある場合は、Debianに対するバグレポートを書いてください。 –