VoltDB中now()函数返回时间与系统时间不一致的解决方法咨询
解决VoltDB now()与系统date时间不一致的问题
看起来你碰到了VoltDB时区和系统时区不匹配的问题——VoltDB默认使用UTC时区,而你的shell环境用的是EDT(美国东部夏令时),两者正好差4小时(EDT比UTC晚4小时,03:30+4小时正好对应你看到的07:13左右的时间)。要让两边时间一致,你可以通过以下方式调整:
启动VoltDB时指定时区参数
在启动VoltDB服务器的时候,添加-Duser.timezoneJVM参数,设置和系统一致的时区。比如你的系统用的EDT对应的标准Java时区ID是America/New_York,启动命令可以写成:voltdb start -Duser.timezone=America/New_York如果你不确定系统对应的Java时区ID,可以先通过
date +%Z确认系统时区,再匹配对应的标准时区标识符(比如国内CST对应Asia/Shanghai)。修改VoltDB配置文件永久生效
要是不想每次启动都手动加参数,可以修改VoltDB的部署配置文件(通常是deployment.xml),在<configuration>标签内添加JVM参数:<configuration> <jvmarg value="-Duser.timezone=America/New_York"/> <!-- 保留其他原有配置项 --> </configuration>修改完成后重启VoltDB服务,配置就会永久生效。
验证设置结果
重启服务后,重新执行select * from test2;,再对比系统的date命令输出,应该就能看到两者时间完全一致了。
内容的提问来源于stack exchange,提问作者Xu Zhenxue
相关产品推荐
相关产品推荐

