在项目中遇到一个这样的错误,一看知道是字符集的问题。
那么去查看数据库 的字符集
mysql > show variables like '%character%';
可是呢,字符集没问题,再看:
mysql > SHOW VARIABLES LIKE 'collation_%';
还是没问题,这就尴尬了,为什么呢。
在网上看了看,有说去查看表的字符编码的。于是去看了 表的字符编码。果然问题出在了这里:
将如下字符集改成utf8
再经测试,完美。
原因:
出现上述原因是建表的时候使用的hibernate自动建表。hibernate使用的方言是:org.hibernate.dialect.MySQL5Dialect ,
查看源码可以看到
@Override public String getTableTypeString() { return " ENGINE=InnoDB"; }
里面是这样的。
解决方法:
我们可以继承MySQL5InnoDBDialect类重写 getTableTypeString方法
import org.hibernate.dialect.MySQL5InnoDBDialect; public class CustomerMySqlDialect extends MySQL5InnoDBDialect{ @Override public String getTableTypeString() { return " ENGINE=InnoDB DEFAULT CHARSET=utf8"; } }
然后在jdbc.properties中加入:
jdbc.url=jdbc:mysql://localhost:3306/exam?useUnicode\=true&characterEncoding\=UTF-8
在xml中引用自定义的方言即可
<prop key="hibernate.dialect">com.exam.bean.common.CustomerMySqlDialect</prop>
相关推荐
标题中的“Caused by: java.sql.SQLException: JZ0SJ: 没有在此数据库中发现元数据存取器信息。 请按 jConnect 文档中所述安装”是一个典型的错误信息,表明在尝试使用Java数据库连接(JDBC)驱动程序访问数据库时...
在Java编程中,`java.sql.SQLException: 结果集已耗尽` 是一个常见的错误提示,通常出现在处理数据库查询结果集时。这个异常表明程序试图访问已经没有数据的结果集中下一行,即所有行已经被遍历完,尝试访问超出范围...
java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK ……
在oracle里面运行一下,解决Exception java.sql.SQLException ORA-00600 内部错误代码
它实现了Java Database Connectivity (JDBC) API,使得开发者可以使用Java语言来操作Oracle数据库,执行SQL语句,进行数据查询、插入、更新和删除等操作。Oracle JDBC驱动分为不同版本,包括 Thin、OCI、JDBC-ODBC ...
在Oracle数据库操作中,我们经常会遇到与`java.sql.SQLException`相关的异常。这个异常通常是Java应用程序在尝试与Oracle数据库进行交互时出现的问题。本篇将详细探讨`java.sql.SQLException`的各种常见类型及其解决...
Q: I am working with ... I am using updateBinaryStream method of resultset to update the BLOB field but it is failing after giving following exception java.sql.SQLException: Internal Error: Unable to
java.sql.SQLException: null, message from server: “Host ‘223.72.41.7’ is not allowed to connect to this MySQL server” 客户端访问时报错: 解决方法: 1,登陆服务器 mysql> use mysql; //用mysql ...
主要给大家介绍了关于MySQL存储表情时报错:java.sql.SQLException: Incorrect string value: 'xF0x9Fx92xA9x0Dx0A...'的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
本文主要介绍了关于MySQL存储表情报错:java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x92\xA9\x0D\x0A…’的相关解决方法,分享出供大家参考学习,下面话不多说了,来一起看看详细的介绍: ...
当你遇到"java.sql.SQLException: No suitable driver"这样的错误时,通常意味着你的Java环境无法找到匹配的数据库驱动。这个问题的解决方法是确保已经正确地引入了MySQL JDBC驱动(也称为Connector/J)。 MySQL ...
import java.sql.SQLException; ``` 3. **注册驱动**:在使用MySQL驱动前,需要通过`Class.forName()`方法注册驱动。尽管在较新的JDBC版本中这个步骤可以省略,但为了兼容性,很多示例代码仍然包含它: ```java ...
Unknown column 'fillMen' in 'field list' java.sql.SQLException: Operation not ...java.sql.SQLException: QueryRunner requires a DataSource to be invoked in this way, or a Connection should be passed in
这种错误通常是由于开发者在编写 SQL 语句时,忘记了某个分号或写错了分号,导致 Oracle 无法执行 SQL 语句。解决这个错误的方法是,检查 SQL 语句中的分号是否正确,确保 SQL 语句正确结束。 ORA-01722: 无效数字 ...
当你尝试连接到MySQL数据库时,可能会遇到一个特定的异常:“java.sql.SQLException: The server time zone value ‘?й???????’ is unrecognized or represents more than one time zone”。这个错误表明服务器...
例如,事务A先锁住表A,然后试图锁住表B,而事务B则是先锁住表B再试图锁住表A。 2. 长事务:长时间运行的事务可能会占用大量资源,增加其他事务等待的时间,从而增加死锁的风险。 3. 用户交互:用户可能在事务中间...
绝对好用的9i驱动包+10g驱动包 解决java.sql.SQLException: 不支持的特性 解决oracle.jdbc.driver.OracleDatabaseMetaData.supportsGetGeneratedKeys()Z异常 等等