java.sql.SQLException: Unsupported character encoding 'utf8mb4'.

博客讲述了在使用Java (JDBC) 连接MySQL时遇到'utf8mb4'字符集不支持的问题,导致SQL更新数据库失败。问题源于为处理emoji表情而在JDBC连接字符串中指定的编码。解决方案是切换到utf8mb4字符集,这是支持4字节UTF-8 Unicode编码的方法,以确保表情等特殊字符的正确存储。
摘要由CSDN通过智能技术生成

四月 12, 2017 3:47:52 下午 org.apache.catalina.core.StandardWrapperValve invoke

严重: Servlet.service() for servlet [SpringMVC] in context with path [/yuyi] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException

### Error updating database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Unsupported character encoding 'utf8mb4'.)

### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Unsupported character encoding 'utf8mb4'.)] with root cause

java.sql.SQLException: Unsupported character encoding 'utf8mb4'.

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:973)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:918)

at com.mysql.jdbc.StringUtils.getBytes(StringUtils.java:572)

at com.mysql.jdbc.StringUtils.getBytes(StringUtils.java:717)

at com.mysql.jdbc.Buffer.writeStringNoNull(Buffer.java:700)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2720)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2832)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2781)

at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1569)

at com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:4218)

at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3613)

at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2554)

at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2321)

at com.mysql.jdbc.Connectio

这个问题看起来是一个 Java Web 应用程序在连接数据库时出现了异常。错误信息提示说不支持 UTF-8 字符编码。这通常发生在使用 JDBC 连接数据库时。 首先,你需要检查数据库连接字符串是否正确。在连接字符串中,你需要确保指定了正确的字符编码。例如,如果你使用 MySQL 数据库,连接字符串应该包含以下参数: ```java jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=UTF-8 ``` 这里的 characterEncoding 参数指定了字符编码为 UTF-8。你需要根据你使用的数据库类型和版本来确定正确的连接字符串和字符编码。 如果连接字符串已经正确配置,那么你需要检查应用程序中是否正确地设置了字符编码。在 Java Web 应用程序中,你可以在 web.xml 文件中设置默认的字符编码。例如,你可以添加以下行: ```xml <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 这里的 encoding 参数指定了默认的字符编码为 UTF-8。你需要根据你使用的框架和应用程序结构来确定正确的设置方式。 如果以上方法都无法解决问题,你可以尝试重新启动应用程序或者重新部署应用程序。如果问题仍然存在,你可能需要查看应用程序的日志文件以获取更多信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值