Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ApacheJames2.3.2不会写入MySQL_Java_Mysql_Apache_James - Fatal编程技术网

Java ApacheJames2.3.2不会写入MySQL

Java ApacheJames2.3.2不会写入MySQL,java,mysql,apache,james,Java,Mysql,Apache,James,我有一个正在运行的ApacheJames邮件服务器,但只是将其转换为使用MySQL数据库而不是文件系统。 它创建了一些表,但不会写入它们。这使得它不发送任何邮件 由于它将与数据库交互并插入用户,我想我已经正确配置了数据库数据源和用户 <data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource"> <driver>com.mysql.jdbc.Driver</drive

我有一个正在运行的ApacheJames邮件服务器,但只是将其转换为使用MySQL数据库而不是文件系统。 它创建了一些表,但不会写入它们。这使得它不发送任何邮件

由于它将与数据库交互并插入用户,我想我已经正确配置了数据库数据源和用户

<data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource">
    <driver>com.mysql.jdbc.Driver</driver>
    <dburl>jdbc:mysql://127.0.0.1/james</dburl>
    <user>xxxx</user>
    <password>yyyy</password>
    <max>20</max>
</data-source>
这是邮件日志中的完整堆栈跟踪

10/12/14 16:23:18 INFO  James.Mailet: Error while storing mail.
javax.mail.MessagingException: Exception caught while storing mail Container: ;
  nested exception is:
    com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'last_updated' at row 1
    at org.apache.james.mailrepository.JDBCMailRepository.store(JDBCMailRepository.java:764)
    at org.apache.james.transport.mailets.ToMultiRepository.storeMail(ToMultiRepository.java:230)
    at org.apache.james.transport.mailets.ToMultiRepository.service(ToMultiRepository.java:154)
    at org.apache.james.transport.mailets.LocalDelivery.service(LocalDelivery.java:66)
    at org.apache.james.transport.LinearProcessor.service(LinearProcessor.java:424)
    at org.apache.james.transport.JamesSpoolManager.process(JamesSpoolManager.java:405)
    at org.apache.james.transport.JamesSpoolManager.run(JamesSpoolManager.java:309)
    at java.lang.Thread.run(Thread.java:745)
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'last_updated' at row 1
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2973)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
    at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1129)
    at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:681)
    at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:803)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:168)
    at org.apache.james.mailrepository.JDBCMailRepository.store(JDBCMailRepository.java:752)
10/12/14 16:23:18 INFO  James.Mailet: ToRepository: Storing mail Mail1418257398530-1 in dbfile://maildb/deadletter/error
下面是我如何指定存储库的

<mailet match="All" class="ToRepository">
    <repositoryPath> db://maildb/deadletter/error </repositoryPath>
</mailet>
因为它似乎抱怨last_updated datetime为空,所以我允许该列为null,但这没有帮助。 我没有以任何方式改变java,所以我不应该把任何事情搞砸。我甚至不知道它从哪里得到日期时间


有人能看到我错过的东西吗

解决:我在Apache bug档案中发现了一篇晦涩难懂的帖子,提到添加这个参数

<dburl>jdbc:mysql://127.0.0.1/james?useServerPrepStmts=false</dburl> 
…到数据源区域。事实上,这篇文章说在这里增加2个parm,但我发现它只接受一个parm

我不知道我该如何知道那些PARM或他们做什么,但这让一切都神奇地运转起来。有时,使用开源软件教你更多的是研究而不是编程

<dburl>jdbc:mysql://127.0.0.1/james?useServerPrepStmts=false</dburl>