Sign-up our Newsletter  Register on our LinkedIn  Follow us on Twitter  Check out our Facebook  Follow us on Google+
Follow

Recently I started to get some error popups when creating item. Logs show issues related to utf8mb4. What's wrong?

This is probably because:

  • you updated your MySQL (or MariaDb) server
  • or you changed the default character set of your server to utf8mb4
  • or you changed your JDBC driver in XStudio
  • or updated to XStudio 4.0sp3 (which includes a new default JDBC driver mariadb-java-client-1.7.4)

Here is the cause:

1) In older versions of MySQL (or MariaDb), only the character set "utf8" was supported.
But it turned out that this implementation was incomplete (some 'exotic' emojis not being supported).
Oracle therefore added a character set "utf8mb4" that corrected the problem.
This character set is supported since version 5.5.3 of MySQL

2) From the point of view of XStudio, we do not force any character set.
The DBA can use the default character set it wants for the entire database.
The only case where we force a character set is for rich-text fields.
We force them (since the first version of XStudio) to "utf8". Then when we execute a SQL query that requires some sorting we force the collation to "utf8_bin" (which was the only case sensitive collation for utf8 in previous version of MySQL).

We do this by adding to the query:
WHERE field_name=field_value COLLATE utf8_bin

Then what can be the problem?

i) Your DBA set "utf8mb4" as the default character set on your base and the "COLLATE utf8_bin" we're using is incompatible with "utf8mb4"

ii) your MySQL version is greater than 5.5.3 and the default character set on your base is "utf8" (or other i.e. "latin1", etc.).
Since your version of MySQL is greater than 5.5.3, it supports utf8mb4.
When you use an "old" JDBC driver (i.e. mariadb-java-client-1.1.5 like in XStudio version <= 4.0sp2), it does not support utf8mb4 and everything continues to work normally in utf8.
When you use a recent JDBC driver, it accepts the new character set "utf8mb4" preferred by Oracle and "converts" in real time the fields "utf8" to "utf8mb4".

In those case, we should use the new collation "utf8mb4_bin" or one of the new case sensitive collations ("as_cs") added by MySQL/MariaDb (ie "utf8mb4_0900_as_cs" etc.) but it is part of our code and can't be currently customized.

Solution

We've just added the ability to specify the collation in XStudio's settings. This will be available in XStudio 4.0sp4+.

Possible workaround until 4.0sp4 is released (depending on different factors) You can try to update the JDBC driver you're using and use an old one such as mariadb-java-client-1.1.5.

Was this article helpful?
0 out of 0 found this helpful
Have more questions? Submit a request

0 Comments

Please sign in to leave a comment.