Hello!

First and foremost, I want to apology if this email shouldn't go into
this email list.

Ok, I'm facing this ugly problem in SQLAlchemy with MySQL. Every time I
want to insert a Unicode string into the database this error is
triggered:

    sqlalchemy.exc.DBAPIError: (CollatedWarningsError) (None, 'query
    caused warnings', [(<class 'oursql.Warning'>, (u"Incorrect string
    value: '\\xF0\\x9F\\x92\\xAF' for column 'text' at row 1", 1366L))])

I have searched on the Internet for an answer for my problem, but, so
far, the solutions I have found do not work. I know that for 4-byte
Unicode characters you need your database to use the `utf8mb4`
charset. I did exactly that, I delete my database and created it with
`CREATE DATABASE test_facebook_db CHARACTER SET utf8mb4;`, here are some
variables and their values:

MariaDB [test_facebook_db]> show variables like 'coll%';
+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | utf8_general_ci    |
| collation_database   | utf8mb4_general_ci |
| collation_server     | utf8_general_ci    |
+----------------------+--------------------+
3 rows in set (0.00 sec)

MariaDB [test_facebook_db]> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

MariaDB [test_facebook_db]> show full columns from tt_post;
+-------------------------+--------------+--------------------+-
| Field                   | Type         | Collation          | 
+-------------------------+--------------+--------------------+-
| id                      | int(11)      | NULL               | 
| username_id             | int(11)      | NULL               | 
| added                   | datetime     | NULL               | 
| created_at              | datetime     | NULL               | 
| favorite_count          | bigint(20)   | NULL               | 
| filter_level            | varchar(10)  | utf8mb4_general_ci | 
| tweet_id                | bigint(20)   | NULL               | 
| in_reply_to_screen_name | varchar(40)  | utf8mb4_general_ci | 
| in_reply_to_status_id   | bigint(20)   | NULL               | 
| in_reply_to_user_id     | bigint(20)   | NULL               | 
| lang                    | varchar(3)   | utf8mb4_general_ci | 
| possibly_sensitive      | tinyint(1)   | NULL               | 
| retweet_count           | bigint(20)   | NULL               | 
| text                    | varchar(160) | utf8mb4_general_ci | 
+-------------------------+--------------+--------------------+-

And yet, if something like the string u'You gotta be who you are in this
world. \ud83d\udcaf' is received and I try to insert it into the
database, the CollatedWarningsError is triggered.

The string I'm using to create my sqlalchemy engine is this
`mysql+oursql://dev:devpassword@localhost/test_facebook_db?default_charset=1&charset=utf8mb4"`
I'm not doing anything special in my tables or when I issue the command
to create the tables in the database.
-- 
Pax et bonum.
Jorge Araya Navarro.
DiseƱador Publicitario, Programador Python y colaborador en Parabola
 GNU/Linux-libre
https://es.gravatar.com/shackra

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to