java servlet用复合键将数据插入mysql数据库

时间:2013-09-13 15:35:38

标签: java mysql servlets

我正在研究一个需要将一些数据插入到db表中的servlet,其中复合主键由userid,dataid和CURRENT_TIMESTAMP组成。 但是在执行查询时出现以下错误

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry'13-7-2013-09-13 23:22:24' for key 'PRIMARY'

我认为这是由于在同一时间内多次将行插入到同一个表中,尽管使用了不同的dataid。有没有解决这个问题的方法?我应该取消CURRENT_TIMESTAMP作为主键的一部分来做这个技巧还是有其他一些更好的解决方法?

非常感谢,感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

如果是日志表,建议不要使用主键。如果要在此表中加速某些搜索,请创建相应的索引。

如果您需要主键(例如,如果您打算将其与JPA一起使用),最好使用一个数字,例如

ID int AUTO_INCREMENT PRIMARY KEY

例如,log4j可以使用org.apache.log4j.jdbc.JDBCAppender将每个事件日志插入数据库。

另见MySQL storage engine for a large log table