Hibernate连接MYSQL失败提示时区错误该怎么解决?
平台:
WIN10 X64 专业版。
IDEA 2016.1.1.
MYSQL 5.7.12
hibernate 4.2.2
具体问题:
用hibernate连接MYSQL数据库的时候提示
ERROR: The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
提示说服务器时区设置错误,我就用 MySQL Workbench 使用show variables like '%time_zone%';
命令查看时区,显示如下图所示:
很奇怪。。。。系统时区不显示(难道内容是中文?所以显示不出来?)。
请问该怎么解决?
以下是
hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/xk_demo</property>
<property name="connection.username">root</property>
<property name="connection.password">5566</property>
<property name="connection.pool_size">1</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="current_session_context_class">thread</property>
<property name="show_sql">true</property>
<mapping class="com.hib.db.XkMapEntity"/>
<mapping resource="com/hib/db/XkMapEntity.hbm.xml"/>
<!-- DB schema will be updated if needed -->
<!-- <property name="hbm2ddl.auto">update</property> -->
</session-factory>
</hibernate-configuration>
和自己写的测试demo:
import com.hib.db.XkMapEntity;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Main {
public static void main(String[] args) throws Exception
{
try{
XkMapEntity xkMapEntity = new XkMapEntity();
xkMapEntity.setParentId(0);
xkMapEntity.setLevel(1);
xkMapEntity.setParentUniqueId(1001);
xkMapEntity.setMapUrl("f://map.jpg");
xkMapEntity.setMapPosX(29);
xkMapEntity.setMapPosY(34);
xkMapEntity.setDescription("demo");
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
session.save(xkMapEntity);
session.getTransaction().commit();
}catch (Exception e){
System.out.println(e.toString());
}
}
}
回答:
在 connection.url
值的后面追加
?serverTimezone=UTC
IDEA DataBase 中连接不上可以用同样的办法。
题主可以在 mysql 中执行命令试下:set global time_zone='+8:00'
回答:
使用 GMT+8 可用。
?zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8
回答:
@junbaor 谢谢指点,追加?serverTimezone=UTC
就能写入数据库了,但是如果是?serverTimezone=UTC+8
的话就会提示如下图的错误:
最后,IDEA依然提示数据库连接不上,但是却能正常向数据库写入数据,如下图所示:
回答:
GMT+8不能直接用,需要URL转码,GMT%2B8
以上是 Hibernate连接MYSQL失败提示时区错误该怎么解决? 的全部内容, 来源链接: utcz.com/p/181257.html