4

我试图从 XML 文件中获取一些订单信息并尝试将其存储在数据库(MySQL)表中。我可以从 XML 文件中检索订单信息,但是当我尝试插入表时,它显示错误为 MySQLIntegrityConstraintException。

我的程序包含如下,

def Order = new XmlParser().parse("MyXml.xml")
def set1 = sql.dataSet("order_item")
def set2 = sql.dataSet("order_header")
Order.order_item.each {
// retrieving order information and storing
}
set1.add(Column_Name1:order_id,Column_Name2:field2,Column_Name3:field3)
set2.add(Column_Name1:order_id)

我在下面详细列出了错误

警告:执行失败:插入 order_item(order_id、order_item_seq_id、order_item_type_id、product_id、prod_catalog_id、quantity、unit_price、unit_list_price、item_description、status_id)值(?、?、?、?、?、?、?、?、? ,?)因为使用:无法添加或更新子行:外键约束失败(ecommerc e/order_item,CONSTRAINT ORDER_ITEM_HDRFOREIGN KEY(ORDER_ID)REFERENCES order_headerORDER_ID))捕获:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationExcepti on:无法添加或更新子行:外键约束失败(ecommerce /order_item,CONSTRAINT ORDER_ITEM_HDRFOREIGN KEY(ORDER_ID)REFERENCES o rder_headerORDER_ID))com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:无法添加或更新子行:外键约束失败(ecommerce/order_i tem, 约束外ORDER_ITEM_HDR键 ( ORDER_ID) 参考order_hea der(ORDER_ID)) 在 com.mysql.jdbc.Util.getInstance(Util.java:384) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java :1041) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3562) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3494) 在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO. java:1960) 在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2114) 在 com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2696) 在 com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement .ja va:2105) 在 com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java :2398) 在 com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java :2316) 在 com。mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java :2301) 在 db2xml.XMLToDatabase$_main_closure2.doCall(XMLToDatabase.groovy:52) 在 db2xml.XMLToDatabase.main(XMLToDatabase.groovy:38)

谁能帮我摆脱这个问题。提前致谢

4

1 回答 1

3

首先要更新的外键约束表,然后是我应该更新的特定表。上面代码的一个小改动是

set2.add(Column_Name1:order_id) set1.add(Column_Name1:order_id,Column_Name2:field2,Column_Name3:field3)

应该先更新第 2 组,然后再更新第 1 组。

现在它对我有用。谢谢大家。

于 2012-09-05T05:19:17.047 回答