精华内容
下载资源
问答
  • 而且在网上搜索发现,在Java BUG的数据库中也早已有人报告了这个错误(但是一直没有解决),其中有人是XP,有人是2003。看来不是环境的问题了。 会是注册表的问题吗? 我们知道在注册表HLM\software\microsoft\...

    前一阵子更新了系统,鸟枪换炮地装上了WIN7,可是项目却出现了莫名其妙的问题。我这个项目的客户端启动之后会从服务端获取系统时间,然后更新本地时间。但我发现每次启动客户端后,本地时间都会被改为8小时之前。起初我以为是服务器上系统时间错了,也就没管,一直以8小时前的本地时间进行调试。但是当这影响了我的作息时间,导致下班延后给人一种主动加班的表象时,我无法容忍了,决定到服务器上一看究竟。

    这一看让我大跌眼镜(好吧,尽管我不带眼镜)——服务器时间是正确的。那问题究竟在哪里呢?于是设置断点,开始调试。当断点运行到

    check.setSystemTime(newDate());

    时,查看check对象的systemTime字段的值,居然是传说中的格林威治时间——8小时前。。。

    也就是说new Date()出来的不是系统时间,是不是时区出问题了呢?一测试,果然。看下面的代码:

    Datedate=newDate();System.out.println(date.toString());Calendarcalendar=Calendar.getInstance();System.out.println(calendar.getTime());System.out.println(System.getProperty("user.timezone"));System.out.println(System.getProperty("user.country"));

    结果如下:

    Wed May 11 02:08:55 CST 2010

    Wed May 11 02:08:56 CST 2010

    GMT

    CN

    也就是说,系统的时区出现了问题。但是系统时区是完全正确的:

    8642d361d01e30212da122fe31dfdc94.png

    问题究竟出在哪里呢?

    会是环境不兼容吗?

    我的JDK是1.5版本,会不会是JDK太旧与WIN7不兼容,于是在获取当前时区时出现异常而默认取到了GMT呢?于是同样的环境在其他机器上测试,居然完全没问题。而且在网上搜索发现,在Java BUG的数据库中也早已有人报告了这个错误(但是一直没有解决),其中有人是XP,有人是2003。看来不是环境的问题了。

    会是注册表的问题吗?

    我们知道在注册表HLM\software\microsoft\window nt\currentversion\time zones下有关于各个时区的配置,会不会是由于安装了某个程序把这些配置破坏了呢?于是我从没有问题的机器上导出了一份该节点的注册表,导入到我的机器,奇迹出现了。。。

    吗?

    答案是没有,问题依旧。

    会是人品问题吗?

    还真有这个可能。同样的环境别人的机器没问题,而我的不行,不是RPWT是什么?但我是不相信宿命的。笼统上说环境大致相同,但肯定会有微小的差别,这种微小的差别是无法测评的。

    实在没有办法,不得不求助于CSDN,有几位大牛耐心地帮我分析了问题,并提出了一些解决方案。

    瞒天过海法

    既然在目前的项目中只有我一台机器有这个问题,也许在这台机器上做点手脚就可以漫天过海了。

    在Eclipse中打开Run对话框的Arguments选项卡,在VM arguments框的后面加入如下的参数:

    -Duser.timezone=Asia/Shanghai

    这样在调试或运行程序时,就会先更改时区。由于是本地的配置,不会对其他机器造成影响。

    最终“解决方案”

    也许重装系统可以解决,但是我懒,不愿重装。那么没有办法,只有升级JDK了。把1.5卸载,安装1.6,修改一下环境变量,再运行之前的程序,OK,整个世界终于清静了。

    但是,问题的症结何在?

    展开全文
  • 我在Spring应用程序中进行了一个简单的测试,该应用程序的默认时区设置为UTC:@SpringBootApplicationpublic class MemberIntegrationApp {@Autowiredprivate TimeZoneProperties timeZoneProperties;@...

    我在Spring应用程序中进行了一个简单的测试,该应用程序的默认时区设置为UTC:

    @SpringBootApplication

    public class MemberIntegrationApp {

    @Autowired

    private TimeZoneProperties timeZoneProperties;

    @PostConstruct

    void started() {

    TimeZone.setDefault(TimeZone.getTimeZone(timeZoneProperties.getAppDefault())); // which is UTC

    }

    public static void main(String[] args) {

    SpringApplication.run(MemberIntegrationApp.class, args);

    }

    }

    而且,这个简单的测试:( 测试类也带有注释,@SpringBootTest以将配置加载到主类中并被@SpringRunner应用)

    /**

    * Test the effect of setting timezone

    */

    @Test

    public void testTimezoneSettingOnSimpleDateFormat() throws ParseException {

    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    String d = "2018-08-08 12:34:56";

    log.info("Trying to parse the date string: {}", d);

    Date result = f.parse(d);

    log.info("The result should be 12:34 UTC: {}", result);

    f.setTimeZone(TimeZone.getTimeZone("UTC"));

    result = f.parse(d);

    log.info("The result should be 12:34 UTC: {}", result);

    f.setTimeZone(TimeZone.getTimeZone("Europe/Madrid"));

    result = f.parse(d);

    log.info("The result should be 10:34 CEST: {}", result);

    log.info("Now the offset(depre): {}", result.getTimezoneOffset());

    }

    我有输出:

    Trying to parse the date string: 2018-08-08 12:34:56

    The result should be 12:34 UTC: Wed Aug 08 12:34:56 UTC 2018

    The result should be 12:34 UTC: Wed Aug 08 12:34:56 UTC 2018

    The result should be 10:34 CEST: Wed Aug 08 10:34:56 UTC 2018

    Now the offset(depre): 0

    现在,为什么第四行的值正确,但时区错误?应该是Europe/Madrid。偏移量(在Java

    8中已弃用,好的,我可以原谅),它应该是+0200,而不是0。

    之所以是UTC,是因为当转换为in时log.info(),slf4j会干扰吗?要不然是啥?我不这么认为,因为也System.out.println()给我UTC。

    我知道我应该使用OffsetDateTime,但是这是遗留的,我们暂时无法将所有日期字段更改为该字段。我想知道为什么Java错误地解析了它。

    Timezone.getDefault()使用SimpleDateFormat进行解析有什么作用?那是什么f.getTimezone()呢?他们似乎在流程的不同部分起作用。

    我问这个问题,因为在内部Jackson

    SimpleDateFormat用来处理日期字符串/格式日期。配置是否ObjectMapper影响SimpleDateFormat映射器使用的?

    展开全文
  • 十二月 02, 2018 9:16:19 下午 com.mchange.v2.resourcepool.BasicResourcePool警告: Having failed to acquire a resource, ...

    十二月 02, 2018 9:16:19 下午 com.mchange.v2.resourcepool.BasicResourcePool

    警告: Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@3fad3f72 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.

    十二月 02, 2018 9:16:19 下午 com.mchange.v2.resourcepool.BasicResourcePool

    警告: com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@3af62bf5 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:

    java.sql.SQLException: 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.

    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)

    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)

    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)

    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)

    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)

    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:76)

    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835)

    at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:455)

    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240)

    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:207)

    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)

    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)

    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)

    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)

    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)

    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)

    at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)

    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)

    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)

    Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: 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.

    at sun.reflect.GeneratedConstructorAccessor21.newInstance(Unknown Source)

    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)

    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:85)

    at com.mysql.cj.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:132)

    at com.mysql.cj.protocol.a.NativeProtocol.configureTimezone(NativeProtocol.java:2234)

    at com.mysql.cj.protocol.a.NativeProtocol.initServerSession(NativeProtocol.java:2258)

    at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1319)

    at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:966)

    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:825)

    ... 12 more

    8345fefb2dfb4ec16bd14ecb09b07986.png

    展开全文
  • 改为你所在的时区即可,例如: agentTZRegion=Asia/Chungking 关于时区的列表参考:10.2.0\db_1\sysman\admin\supportedtzs.lst 然后先停止 dbconsole 使时区设置生效并重启OracleDBConsole: emctl stop dbconsole ...

    刚装完 Oracle 10g,然后,进行em后,界面出来了,但报了一个错:

    java.lang.Exception: Exception in sending Request :: null

    很多功能不能用,提示重新登录

    解决方案:找到下面的文件

    $ORACLE_HOME\db_1\$HOSTNAME\sysman\config\emd.properties

    其中的agentTZRegion缺省是GMT,改为你所在的时区即可,例如:

    agentTZRegion=Asia/Chungking

    关于时区的列表参考:10.2.0\db_1\sysman\admin\supportedtzs.lst

    然后先停止 dbconsole 使时区设置生效并重启OracleDBConsole:

    emctl stop dbconsole

    emctl resetTZ agent

    emctl config agent getTZ

    emctl start dbconsole

    重新登陆,搞定!

    以上是从网络上面找到的方法,但是我是试了很多遍才成功。

    其中,过程中第二步,出现了resetTZ failed 的提示,不要去管它,按步骤运行即可。

    在这之前最好设置好oracle_sid环境变量,系统变量->新建->变量名写ORACLE_SID,值写orcl(我使用的是默认的orcl,如果你的是自己写的,请使用你的)->确定。

    还有人说,上面的步骤执行完以后,还得再重新启动一遍,然后才可以。最后就是建议完成后重启系统。

    备注:cmd运行必须以管理员身份运行。

    展开全文
  • php时区错误

    2021-04-08 08:12:45
    遇到date(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those ...
  • 在启动参数上加上时区设置-Duser.timezone=GMT+08 java -jar ./dbmonitor.jar
  • 开始通过mysql查看时区的配置是否存在问题 show variables like '%time_zone%'; 系统时区仍然为空,到这里有点崩溃 于是采用曲线救国,那就采用临时的设置时区的方法 set global time_zone='+8:00'; show global ...
  • 在进行MySQL连接时,出现了如下错误:(1)数据库时区不匹配(2)数据库连接请求超时(3)连接池出现空指针异常,获取不到connection对象甚至再后来导致测试dbutils时出现错误,怎么也获取不到connection对象,当时debug又...
  • 使用JDBC连接数据库的时候时区错误问题 Exception in thread "main" java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must ...
  • Docker中时间时区错误

    2021-04-21 10:59:55
    其实说到这里,第一反应就是时区问题,物理机可能使用了UTC时间。可是查看物理机CentOS的时间,没有问题,后来进入Docker的CentOS查看时间,原来是Docker的CentOS用的UTC时间。问题找到了,下面就是解决,其实解决...
  • 错误信息如下 Connection to mybatis@localhost failed. [08001] Could not create connection to database server. Attempted reconnect 3 times. Giving up. 解决办法 jdbc:mysql://localhost:3306/ssmbuild?use...
  • 在新灌好的 Debian Wheezy 跑 PHP, 发现时间是错误的, 但是 Linux 的 Timezone 设置都正确.于 Debian / Ubuntu Linux 设置正确 timezone + 时间, 可用下述步骤:dpkg-reconfigure tzdata # 选 Asia -> ...
  • 官方文档建议使用Time.TIMEZONE_UTC,但是该东西已被弃用,因此在我的解决方案中,我明确设置了时区(timezoneId =“ UTC”).您可以设置所需的任何时区,例如“太平洋/檀香山”,甚至“亚洲/新西伯利亚”.这是complete ...
  • 这里值得考虑的是,因为系统的时区修改了,时间也修改了,并且写入了CMOS,那么即使服务器重启,时间和时区也都是正确的,而mysql也需要重启才能读取到系统的最新时区,既然系统时区和时间都是正确的,那么mysql...
  • MySQL时区错误处理方法

    千次阅读 2021-12-14 10:48:34
    在使用 SpringBoot MyBatis搭建项目...经过一番研究发现是MySQL时区问题,由于装的MySQL时区是美国时区,而本机上边是中国时区,二者相差八个小时,因此可以通过更改MySQL时区来解决问题。在此小编收集三种解决方法,
  • wang725 2015年12月26日 16:47 3150 在网上看到很多关于通过调整时区来调整时间的,自己试了发现我并没有做成功,也许是我没用正确,而且可能需求不同。我在做项目时,需求是把后台给的时间字符串,加上8小时,显示...
  • 在初始化数据的时候,后台会报错, ADF_FACES-60098:Faces 生命周期在阶段RENDER_RESPONSE 6中接收到未处理的异常错误oracle.jbo.JboException: JBO-29000: 捕获到意外的异常错误: java.sql.SQLDataException, msg=ORA...
  • 使用 mysql 8.0以上报错:大多有两种错误,driver和时区错误问题文章目录使用 mysql 8.0以上报错:大多有两种错误,driver和时区错误问题一、mysql 8.0以上的 jdbc.properties 配置文件中driver 错误二、时区错误...
  • 提示说服务器时区设置错误,我就用 MySQL Workbench 使用show variables like '%time_zone%';命令查看时区,显示如下图所示: 很奇怪。。。。系统时区不显示(难道内容是中文?所以显示不出来?)。 请问该怎么解决...
  • 只针对ubuntu 之前打镜像时 都是直接在dockerfile 里进行设置 /etc/timezone and /etc/localtime, 打完镜像后,验证测试过业务服务,但是压根没有去验证时间是否正确,这是个不好的行为,还好也没有对业务影响太大...
  • springboot项目在提交登录表单并建立数据库连接时出现如下错误: java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must ...
  • 开发环境:Springboot 2.1.0 + Mybatis + MySql报错主要内容:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or...错误详细信息如下:org.apache.ibatis.exceptions.PersistenceException...
  • 报错 java.sql.SQLException: 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...
  • PHP警告时区错误

    2021-03-22 19:48:20
    //东八时区 echo date('Y-m-d H:i:s'); 二、在页头使用 ini_set('date.timezone','Asia/Shanghai'); 三、修改php.ini。打开php5.ini查找date.timezone 去掉前面的分号修改成为:date.timezone =PRC 重启http服务...
  • 这是我的尝试,我错误地向Calendar实例添加了1小时: PrintWriter output = null; try { output = new PrintWriter( new BufferedWriter(new FileWriter("output.txt", true))); DateFormat dateFormat = new ...
  • 按照如下方法修改时区 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo "Asia/Shanghai" > /etc/timezone 然后 dpkg-reconfigure -f noninteractive tzdata 容器内部修改了,如下图 宿主机也...
  • rac1->emctl stop dbconsoleTZ set to Asia/ChungkingOracle Enterprise Manager 10g Database Control Release 10.2.0.1.0Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.Stopping Oracle ....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,987
精华内容 26,794
关键字:

时区错误