当前位置: 首页 > 知识库问答 >
问题:

尽管插入了数据,但唯一索引或主键冲突错误

曹德明
2023-03-14

我正在尝试实现一个用户身份验证表。我正在进行用户注册,我的控制台打印出来:

org.h2.jdbc.唯一索引或主键冲突:"PUBLIC.USERS_USERNAME_UINDEXPUBLIC.USERS(USERNAME)VALUES 1";SQL语句:
INSERT INTO USERS(FIRST_NAME,LAST_NAME, USERNAME, PASSWORD)VALUES(?,?,?,?) [23505-200]

我真的不明白为什么。我的表的SQL脚本如下:

-- auto-generated definition
create table USERS
(
    USER_ID    INT auto_increment,
    USERNAME   VARCHAR2,
    FIRST_NAME VARCHAR2,
    LAST_NAME  VARCHAR2,
    PASSWORD   VARCHAR2,
    constraint USERS_PK
        primary key (USER_ID)
);

create unique index USERS_USERNAME_UINDEX
    on USERS (USERNAME);

create unique index USERS_USER_ID_UINDEX
    on USERS (USER_ID);

我希望username对每个条目都是唯一的,因此我将该字段设置为唯一的。这就是我填充它的方式:

Connection connection = new InitialiseDatabase().getConnection();
String sql = "INSERT INTO USERS(FIRST_NAME,LAST_NAME,USERNAME,PASSWORD) VALUES(?,?,?,?)";
PreparedStatement myStatement = connection.prepareStatement(sql);
myStatement.setString(1, txtFirstName.getText().trim());
myStatement.setString(2, txtLastName.getText().trim());
myStatement.setString(3, txtUsername.getText().trim());
String hashed = BCrypt.hashpw(txtPassword.getText(), BCrypt.gensalt());
myStatement.setString(4, hashed);
myStatement.executeUpdate();

我该如何解决这个问题?

不过,我的表正在填充数据。所以我不明白到底是什么问题。任何帮助都将不胜感激。

共有1个答案

江奕
2023-03-14

UNIQUE索引确保两行对于唯一索引列不能具有相同的值。https://www.oracletutorial.com/oracle-index/oracle-unique-index/

Unique index or primary key violation: "PUBLIC.USERS_USERNAME_UINDEX ON PUBLIC.USERS(USERNAME) 

很会说话。您可能正在插入一个新行,其用户名值与之前插入的用户名值相同。

不过,我的表正在填充数据

确保您的数据库没有与您尝试插入的值相同的值。

 类似资料:
  • 我是hibernate新手,我遇到了以下问题。“唯一索引或主键冲突”。问题的出现是由于错误的映射,但我花了几个小时来找出为什么会发生这种情况。 我有一个超级类叫做数据结构 然后是关联两个元素的类关联。这里省略了类的某些部分,只是为了简化它。 这个类作为两个数据结构类型类之间的中间类。像这样。 TP-协会-TP TP等级: 或者激活类 总的来说,我增加了以下内容: 当我尝试添加相同的对象时,问题就出

  • 每当我的应用程序启动时,我总是得到以下错误消息: 将data.sql更改为: 生成以下错误消息:

  • 我开始在我的spring managed java项目中使用flyway(我也在使用hibernate)。 我遵循了飞行路线的文档。我还配置了maven插件,一切正常。 尝试使用maven插件进行清理、初始化和迁移,一切正常。 相反,如果我尝试运行我的应用程序(其中有我的flyway bean): 我看到了: 创建数据库的模式 创建schema_version表 我的脚本创建整个数据库工作 不幸的

  • 尝试通过REST Post方法插入Student对象时得到以下错误 2020-10-08 18:50:08.799错误21708---[nio-8080-exec-7]O.A.C.C.C.[.[.[/].[dispatcherServlet]:servlet.Service()在路径[]上下文中的servlet[dispatcherServlet]引发异常[请求处理失败;嵌套异常是org.spri

  • 尝试通过REST Post方法插入学生对象时出现以下错误 2020-10-08 18:50:08.799错误21708---[nio-8080-exec-7]o. a. c. c.C.[.[.]Servlet.service()的servlet[调度Servlet]在上下文中的路径[]抛出异常[请求处理失败;嵌套异常是org.springframework.dao.数据完整性违反异常:不能执行语句

  • 在使用Postgresql的Rails4.2中,我在尝试保存新的ActiveRecord对象时遇到了这个错误 PG::UniqueViolation:错误:重复键值违反唯一约束“My_table_name_pkey” 它看起来像是试图用已经存在的主键将记录插入到表中。我该怎么解决这个问题?