JDBC prepareStatement 存储在mysql上的datetime 时间字段报错的解决方法

遇到一个问题,网上找了很多资料 都不能解决 自己曲线救国解决了,记录一下,如果各位有更好的办法欢迎留言。

首先 我在mysql数据库上创建了一个表其中的createTime 字段用的dateTime类型(项目需要 我个人偏向bigint 毕竟做排序什么的 效率更高);

然后项目里用的JDBC ,当我使用prepareStatement时,prepareStatement.setTimestamp(6, qa.getCreateTime()); qa.getCreateTime()存的是new Timestamp(new Date().getTime()) 当然通过debug 知道prepareStatement中的sql脚本 复制出来 在Navicat中执行 是可以的 但是程序就报错,报错信息如下:

保存问答异常,异常信息:java.sql.SQLException: #22007

com.career.other.exception.OtherDataException: 保存问答异常数据库操作失败!

at com.career.sys.dao.QaDao.save(QaDao.java:107)

at com.career.sys.action.QaAction.question(QaAction.java:63)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:873)

at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1539)

at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68)

at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethodWithDebugInfo(XWorkMethodAccessor.java:96)

at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:88)

at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1615)

at ognl.ASTMethod.getValueBody(ASTMethod.java:91)

at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)

at ognl.SimpleNode.getValue(SimpleNode.java:258)

at ognl.Ognl.getValue(Ognl.java:467)

at ognl.Ognl.getValue(Ognl.java:431)

at com.opensymphony.xwork2.ognl.OgnlUtil$3.execute(OgnlUtil.java:371)

at com.opensymphony.xwork2.ognl.OgnlUtil.compileAndExecuteMethod(OgnlUtil.java:423)

at com.opensymphony.xwork2.ognl.OgnlUtil.callMethod(OgnlUtil.java:369)

at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:436)

at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)

at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:253)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)

at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:260)

at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:52)

at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:139)

at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:134)

at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:134)

at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:199)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:69)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:115)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:88)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:246)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:99)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:139)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:157)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:174)

at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:123)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:171)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:201)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:193)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)

at org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:53)

at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:577)

at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:81)

at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:143)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at com.career.sys.action.SessionFilter.doFilter(SessionFilter.java:50)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:800)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1471)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

很郁闷!

解决办法如下:把时间字段转换成String 然后以

prepareStatement.setString(6, qa.getCreateTime()==null ? null:qa.getCreateTime().toString());这样的方式set值,成功了!

记录的次数较少,文笔不行,希望大家给出其他比较优雅的方式,谢谢!

原文地址:https://www.cnblogs.com/chifengxieyang/p/9412883.html

时间: 2024-07-28 13:42:08

JDBC prepareStatement 存储在mysql上的datetime 时间字段报错的解决方法的相关文章

MySQL中遇到的几种报错及其解决方法

MySQL中遇到的几种报错及其解决方法 1.[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''xxx'' at line 1 解决方法:将所有的" '' "换成" ·· "(将所有的英文单引号换为Tab键上面的那个点号)

Mysql 升级到 5.6 后插入语句时间字段报错:Incorrect datetime value: '' for column 'createtime'

今天部署服务器项目运行,当遇见有时间数据对象的插入和更新操作的时候,就报错,如下: Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'createtime' at row 1 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2868) at com.mysql.jdbc.My

Kettle连接MySQL报错的解决方法

使用Kettle报错的解决方法 1.当你在navicat上面测试数据库连接的时候可以看到数据库连接成功.而在Kettle上面连接同样的库的时候报出一大段错误出来,这时候是不是感觉有点懵逼了. 错误内容如下: 错误连接数据库 [test库] : com.tyky.di.core.exception.XbridgeDatabaseException:Error occured while trying to connect to the database Error connecting to da

MySQL 5.7 Invalid default value for 'CREATE_TIME'报错的解决方法

出处:http://blog.itpub.net/15498/viewspace-2136006/ 由于数据库的升级,今天在执行从MySQL 5.6导出来的SQL文件时报错: mysql> source cms_user.sqlQuery OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected, 1 warning (0.04 sec) ERROR 1067 (42000): Invalid default value for 'CREA

腾讯云二进制包安装mysql报错及其解决方法

报错及其解决方法:-bash:mysql: command not found [[email protected] mysql]# ./scripts/mysql_install_db   --user=mysql --datadir=/mydata/data Installing MySQL system tables... ./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared 

mysql执行update报错1175解决方法

mysql执行update报错 update library set status=true where 1=1 Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and

mysql数据库表字段使用DESC等关键字报错及解决方法

<!-- desc是MySQL数据库的关键字,作为字段名直接使用会报错 --> <sql id="Base_Column"> id,mol,ip,port,name,t.desc,maxAc,maxI,minI,maxW,status</sql> <!-- 查询列表 --> <select id="getTht" resultMap="BaseResultMap" parameterType=

win10 上运行 curl_init() 函数一直报错的解决办法

[问题现象] 1.把 APACHE 的 ZIP 包解压到目录,比如 d:\apache24\ 2.把 PHP 的 ZIP 包解压到目录,比如:d:\php56\ apache 与 php 与 MySQL 的参数配置,网上可以搜罗一大筐,可自行google.bing.百度. 这里主要说一个问题,如果在php中使用 curl_init() 函数,网页上一直提示:Fatal error: Call to undefined function curl_init(), 那么直接把 d:\php56 添加

在android移动设备上登录gmail的时候报password错误解决方法!!!!

今天刚发现的解决的方法:就是登录web端的gmail,查看收件箱应该有no-reply这一帐户给你发过邮件(假设没有,你在移动设备上登录一下gmail).照着邮件里的说明去做,就是生成一个专门应用的password.然后用此password在android移动设备上登录gmail就能够了.我的是这么解决的.