R
Roy Smith
5.1.63-log MySQL Community Server (GPL)
Python 2.7.3
MySQL-python==1.2.3
I've got a table:
CREATE TABLE `songza_temp` (
`s` varchar(1000) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
When I run this code:
--------------------------------------------
db = MySQLdb.connect(host=db_host,
db=db_db,
user=db_user,
passwd=db_passwd,
charset='utf8',
sql_mode='TRADITIONAL')
cursor = db.cursor()
baloon = u'\U0001f388'
print "baloon=%s, repr=%r, length=%d" % (baloon, baloon, len(baloon))
cursor.execute("insert into songza_temp (s) values (%s)", [baloon])
--------------------------------------------
I get:
baloon=<ÿàþ, repr=u'\U0001f388', length=1
Traceback (most recent call last):
File "./try.py", line 21, in <module>
cursor.execute("insert into songza_temp (s) values (%s)", [baloon])
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174,
in execute
self.errorhandler(self, exc, value)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line
36, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1366, "Incorrect string value:
'\\xF0\\x9F\\x8E\\x88' for column 's' at row 1")
My unicode-fu is a bit weak. Are we looking at a Python problem, a
MySQLdb problem, or a problem with the underlying MySQL server? We've
certainly inserted utf-8 data before without any problems. It's
possible this is the first time we've tried to handle a character
outside the BMP.
Python 2.7.3
MySQL-python==1.2.3
I've got a table:
CREATE TABLE `songza_temp` (
`s` varchar(1000) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
When I run this code:
--------------------------------------------
db = MySQLdb.connect(host=db_host,
db=db_db,
user=db_user,
passwd=db_passwd,
charset='utf8',
sql_mode='TRADITIONAL')
cursor = db.cursor()
baloon = u'\U0001f388'
print "baloon=%s, repr=%r, length=%d" % (baloon, baloon, len(baloon))
cursor.execute("insert into songza_temp (s) values (%s)", [baloon])
--------------------------------------------
I get:
baloon=<ÿàþ, repr=u'\U0001f388', length=1
Traceback (most recent call last):
File "./try.py", line 21, in <module>
cursor.execute("insert into songza_temp (s) values (%s)", [baloon])
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174,
in execute
self.errorhandler(self, exc, value)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line
36, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1366, "Incorrect string value:
'\\xF0\\x9F\\x8E\\x88' for column 's' at row 1")
My unicode-fu is a bit weak. Are we looking at a Python problem, a
MySQLdb problem, or a problem with the underlying MySQL server? We've
certainly inserted utf-8 data before without any problems. It's
possible this is the first time we've tried to handle a character
outside the BMP.