Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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 servlet使用复合密钥将数据插入mysql数据库_Java_Mysql_Servlets - Fatal编程技术网

java servlet使用复合密钥将数据插入mysql数据库

java servlet使用复合密钥将数据插入mysql数据库,java,mysql,servlets,Java,Mysql,Servlets,我正在开发一个servlet,它需要使用一个由userid、dataid和CURRENT\u TIMESTAMP组成的复合主键向db表插入一些数据。 但是,我在执行查询时遇到以下错误 com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry'13-7-2013-09-13 23:22:24' for key 'PRIMARY' 我认为这是由于在同一时间多次将行插入到同一

我正在开发一个servlet,它需要使用一个由userid、dataid和
CURRENT\u TIMESTAMP
组成的复合主键向db表插入一些数据。 但是,我在执行查询时遇到以下错误

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry'13-7-2013-09-13 23:22:24' for key 'PRIMARY'
我认为这是由于在同一时间多次将行插入到同一个表中,尽管数据ID不同。这个问题有什么解决办法吗?我应该取消
CURRENT\u TIMESTAMP
作为执行此技巧的主键的一部分,还是有其他更好的解决方法


非常感谢并感谢您的帮助

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

如果您需要一个主键(例如,如果您计划与JPA一起使用它),最好使用一个数字,例如

ID int AUTO_INCREMENT PRIMARY KEY
例如,log4j可以使用


另请参见。

您不能在数据库级别设置自动递增键吗?请检查表是否按您认为的方式进行了实际配置。该错误消息使我怀疑该键实际上不是一个复合键。@实际上,userid和dataid都是外键,当新行插入到各自的组合键中时,会自动递增tables@TomG我在phpmyadmin中检查了三个字段,它们实际上被标记为primary,我想这是一个复合键吗?事实上,我以前用过php访问同一个数据库,做过同样的操作,它很平滑,没有错误,也许是java处理插入的方式不同于php?看起来你的“时间戳”是hour:min:sec。如果您尝试每秒插入超过1行,这将保证重复。考虑添加毫秒。你是说根本不使用主键吗?是的,这有点像一个日志表,但行上也有一些删除。因此,我认为使用一个单独的自动递增键可能会使事情变得更加复杂。是否要删除比日期早的记录?没问题。来自用户?没问题。对于数据ID?也不组合。。。您不需要主键。你需要索引。