一部のデータを mysql テーブルに更新しようとしています。警告やエラーは発生しませんが、挿入されたデータに余分な文字 0 が含まれており、文字列が切り捨てられています。これは Python シェルのコードです。
>>> len(d) #d is a string with contents of an html email
12347
>>> d[:100]
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.=\r\nw3.org/TR/html4/loose.'
>>> a = mysql.connector.connect(user='root', password='mypass', database='mydb')
>>> cur = a.cursor(prepared=True)
>>> cur.execute('UPDATE emails set content=? where emailid=10', (d,))
>>> a.commit()
>>> cur.execute('SELECT content from emails WHERE emailid=10')
>>> cur.fetchall()
[('0<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional/',)]
ご覧のとおり、コンテンツは切り詰められており、余分な '0' もあります。「コンテンツ」フィールドのタイプは MEDIUMTEXT です。厳密に sql_mode を使用した場合と使用しない場合で試しましたが、結果は同じです。