Unable to migrate from H2 to MySQL

While trying to migrate H2 to MySQL Server, I’m stuck at below error.

Transfering 3 instances of Database…[OK]
Transfering 13 instances of User…[OK]
Transfering 25 instances of Setting…[OK]
Transfering 1730 instances of Table…[OK]
Transfering 26331 instances of Field…[OK]
Transfering 1185 instances of FieldValues…BatchUpdateException:
Message: (conn=7) Incorrect string value: ‘\xE4\xB8\xBB\xE9\xA2\x98…’ for column ‘values’ at row 1
SQLState: HY000
Error Code: 1366
java.sql.BatchUpdateException: (conn=7) Incorrect string value: ‘\xE4\xB8\xBB\xE9\xA2\x98…’ for column ‘values’ at row 1
at org.mariadb.jdbc.MariaDbStatement.executeBatchExceptionEpilogue(MariaDbStatement.java:289)
at org.mariadb.jdbc.MariaDbPreparedStatementClient.executeBatch(MariaDbPreparedStatementClient.java:306)
at clojure.java.jdbc$execute_batch.invokeStatic(jdbc.clj:591)
at clojure.java.jdbc$execute_batch.invoke(jdbc.clj:584)




Caused by: java.sql.SQLException: (conn=7) Incorrect string value: ‘\xE4\xB8\xBB\xE9\xA2\x98…’ for column ‘values’ at row 1
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:255)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:165)
at org.mariadb.jdbc.MariaDbStatement.executeBatchExceptionEpilogue(MariaDbStatement.java:286)
… 48 more
Caused by: java.sql.SQLException: Incorrect string value: ‘\xE4\xB8\xBB\xE9\xA2\x98…’ for column ‘values’ at row 1
Query is: INSERT INTO metabase_fieldvalues ( id, created_at, updated_at, values, human_readable_values, field_id ) VALUES ( 259, ‘2019-02-19 15:18:38.879’, ‘2019-03-01 01:00:56.095’, ‘["???","???","???","???","???","???","???","???","???","???","???","???","???","???","???","???","???","???","???","???","???","???","???","???"]’, , 4659 )
java thread: MariaDb-bulk-4
at org.mariadb.jdbc.internal.util.LogQueryTool.exceptionWithQuery(LogQueryTool.java:126)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol$1.handleResultException(AbstractQueryProtocol.java:625)
at org.mariadb.jdbc.internal.protocol.AsyncMultiRead.call(AsyncMultiRead.java:142)
at org.mariadb.jdbc.internal.protocol.AsyncMultiRead.call(AsyncMultiRead.java:66)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Command failed with exception: (conn=7) Incorrect string value: ‘\xE4\xB8\xBB\xE9\xA2\x98…’ for column ‘values’ at row 1

Please assist.

Hi @iamshubhamx
Which version of Metabase?
Which version of MySQL?
Are you using utf8mb4 charset/collation?

Metabase: 0.32.8
MySQL: Server version: 5.7.26-0ubuntu0.16.04.1 (Ubuntu)
And
±-------------------------±-------------------+
| Variable_name | Value |
±-------------------------±-------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_general_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |

@iamshubhamx
But that doesn’t tell if the database that Metabase uses for metadata is utf8mb4 - nor the tables/columns.
By the way, latest release is 0.32.9

@flamber Thanks for your swift assistance!
I creating a new DB using
create database my_db_name
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;

and then the DB migration went smooth.

Also, I upgraded to 0.32.9

Cheers!

1 Like