2014-12-11 18 views
0

아파치 제임스 메일 서버가 작동 중이지만 파일 시스템 대신 MySQL 데이터베이스를 사용하도록 변환했습니다.
테이블을 만들었지 만 테이블에 쓰지는 않습니다. 이것은 어떤 우편물도 배달하지 못하게합니다.아파치 제임스 2.3.2 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 

내가 저장소를 지정하는 방법입니다 ... 여기

exception! 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 

이 mailet 로그에서 전체 스택 추적의 ...

제임스 콘솔이 오류입니다
<mailet match="All" class="ToRepository"> 
    <repositoryPath> db://maildb/deadletter/error </repositoryPath> 
</mailet> 

비어있는 last_updated datetime에 대해 불평하는 것 같아서 해당 열을 null로 만들었지 만 도움이되지 않았습니다. 나는 어떤 식 으로든 자바를 바꾸지 않으므로 엉망이되어서는 안된다. 나는 그것이 어디서 datetime을 얻는 지조차 모른다.

누구든지 내가 놓친 것을 볼 수 있습니까?

답변

0

는 해결 :이 PARM을 추가 언급한다 아파치 버그 보관소에 모호한 게시물을 발견 ...

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

을 ... 데이터 소스 영역에. 사실, 게시물은 2 개의 parms를 여기에 추가한다고 말하지만, 나는 그것이 단지 하나의 parm만을 받아 들일 것임을 알았다.

나는 그 parms 또는 그들이하는 일에 대해 어떻게 알고 있었는지 모르지만, 모든 것이 마술처럼 작동합니다. 때때로 오픈 소스 소프트웨어를 사용하면 프로그래밍보다는 연구에 대해 더 많이 가르쳐줍니다.