用java连接mysql数据库时总是报错:Duplicate entry '1' for key 1,是啥原因?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java连接mysql数据库时总是报错:Duplicate entry '1' for key 1,是啥原因?相关的知识,希望对你有一定的参考价值。

数据库字段你设置有问题,导致你在执行程序,写入数据库时,如果是重复数据,就跟数据库冲突,导致报错。比如classId,如果不用自增,就指定值,如果它是主键或是unique key是不能重复的。主键值重复,你插入数据的那张表的主键字段的值是1重复,即表中已经存在这样的数值,你还要插入同样的数,那肯定是不行的追问

for(int i = 0;i < 6;i++ )

prestatement.setInt(1,i);
prestatement.setString(2,names[i]);
prestatement.executeUpdate();

这是加入循环数据的部分,如何修改呢?

参考技术A 给数据库里的自增字段赋值或者自增字段作为主键有重复值等等各种原因都可能,找关于主键的语句问题。 参考技术B 主键冲突了来自:求助得到的回答 参考技术B 主键值重复了。

使用jdbc连接mysql为啥报错?

当我用JDBC连接MySql数据库时,编译报了如下错误:
错误1:
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
这要求我们注册驱动时,把Class.forName("com.mysql.jdbc.Driver");改成 Class.forName("com.mysql.cj.jdbc.Driver");

当我信息满满的修改之后重新编译时,再次出现了错误:
错误2:
Fri Feb 22 08:55:38 CST 2019 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
这要求我们在设置url参数时,将useSSL=false,修改后 jdbc:mysql://localhost:3306/ds3?useSSL=false

当我修改后,本以为这下应该没问题了,没想到,再一次出现了问题
错误3:
Exception in thread "main" java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
这要求我们修改时区,修改成jdbc:mysql://localhost:3306/ds3?useSSL=false&serverTimezone=UTC

终于,不在报错误了。
错误4:当我们配置xml文件时,要把&转为其本身的转义字符
配置properties文件的urlurl=jdbc:mysql:///ds3?useSSL=false&serverTimezone=UTC配置xml文件的url<property name="url">jdbc:mysql://localhost:3306/ds3?useSSL=false&serverTimezone=UTC</property>
参考技术A

你为什么不指定连接的数据库地址和端口,这样怎么连

以上是关于用java连接mysql数据库时总是报错:Duplicate entry '1' for key 1,是啥原因?的主要内容,如果未能解决你的问题,请参考以下文章

用java连接数据库报错。。

java程序访问数据库,dbcp连接池,hibernate连接总是报池连接用光了/JDBC连接没有报错

使用jdbc连接mysql为啥报错?

mysql数据库怎么链接报错

jdbc连接mysq之serverTimezone设定

求助高手帮我解决java中连接数据库时配置文件的问题,总是抛出空指针的异常