通过我们的REST Web服务,我想在位于AWS云上的MySql数据库中插入双字节(utf-8)字符。
我们在云上有2个db实例:
我们在Windows机器上使用Tomcat服务器并在数据库级别对utf-8支持进行了所有必需的更改,一切正常,我们可以通过本地tomcat的代码插入/更新/获取特殊字符(而本地数据库仅位于云端。)
但是当我们尝试通过点击部署在AWS EC2 UniBox DEV环境中的相同服务来插入特殊字符时,该环境指向DEV实例的DB,该实例也位于与本地数据库实例相同的云上,我们将在下面提到错误:
{
"errorCode": 500,
"message": "Database Connection/SQL Error.",
"error": "CallableStatementCallback; uncategorized SQLException for SQL [{call sp_sign_up_insert(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}]; SQL state [HY000]; error code [1366]; Incorrect string value: '\\xAC\\xED\\x00\\x05t\\x00...' for column 'host_first_name' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\\xAC\\xED\\x00\\x05t\\x00...' for column 'host_first_name' at row 1"
}
我们已经从Tomcat的server.xml配置了数据库的连接详细信息,并且开发环境的server.xml上也存在相同的条目。
我通过参考blogs调整DEV环境中server.xml的条目来尝试了很多东西 还有更多,但没有任何工作......
如果有人能够提出可能是因为我们面临的问题可能是什么原因,那就是DEV env在本地工作时完全没问题的原因。
先谢谢!!! 真正需要你的输入:)
答案 0 :(得分:0)
看起来像Incorrect string value: '\\xAC\\xED\\x00\\x05t\\x00...' for column
或Invalid utf8 character string: 'ACED00'
的MySQL / MariaDB错误意味着您的代码中可能有一个错误。
AC ED 00 ..
是Java序列化对象的前几个字节,这意味着您正在尝试将不支持类型的Java对象绑定到SQL查询(还要记住,原始数组不适合绑定到SQL)。>
仅Mapping SQL and Java Types中所述,某些Java类型可以绑定到SQL。