【问题标题】:"IDENTITY_INSERT" is set to OFF NETBEANS SQL“IDENTITY_INSERT”设置为 OFF NETBEANS SQL
【发布时间】:2021-08-27 18:29:57
【问题描述】:

我正在使用带有本地数据库的 Netbeans。在服务-> 表或 SQL Managament Studio 中添加(插入)执行命令后,一切都很好。 使用“set identity_insert dbo.table1 on”后的工作。

但是当我运行项目时(单击绿色的开始三角形按钮),我只能看到数据(从 table1 中选择 *)或删除。 添加(插入)生成此问题:

org.eclipse.persistence.exceptions.DatabaseException 内部异常:com.microsoft.sqlserver.jdbc.SQLServerException:当 IDENTITY_INSERT 设置为 OFF 时,无法在表“table1”中插入标识列的显式值。 错误代码:544

这是负责添加到基础的代码:

Project p = new Project();
ValuePro vp = new ValuePro(Integer.parseInt(idField.getText()),titleField.getText(), descField.getText());
p.save(vp);
EntityManagerFactory emf = Persistence.createEntityManagerFactory("project");
        
        EntityManager em=emf.createEntityManager();
        em.getTransaction().begin();
        try{
            em.persist(values);
            em.getTransaction().commit();

“Set identity_insert dbo.table1 on”对项目没有影响。 有没有人遇到过类似的问题并有解决办法?

【问题讨论】:

  • “运行项目”对除您以外的任何人都没有多大意义。我建议您考虑一下为什么在插入行时需要提供标识列的值。这违背了标识列的概念——让数据库引擎在插入期间为每一行生成一个唯一值。如果没有关于您的应用程序代码的更多详细信息,任何人都可以提出任何建议,这是值得怀疑的。
  • "运行项目" -> 点击绿色的开始三角按钮 :)

标签: java sql-server jdbc


【解决方案1】:

我找到了答案。 我意识到表中的 id(Netbeans -> Services -> dbo -> Tables -> table1 -> id)在 DB 数据类型中具有值“int identity”。 我删除了该表并重新创建了它(在 Netbeans 中!不在 SQL Management Studio 中。当我在 SQLMS 中尝试相同时,它不起作用)。这次该表创建了一个没有标识的 id int。 一切正常!

【讨论】:

    猜你喜欢
    • 2013-06-09
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 2011-10-02
    • 2018-05-27
    • 2012-04-24
    • 2010-10-01
    • 1970-01-01
    相关资源
    最近更新 更多