【DM版本】:V8
【操作系统】:麒麟v10
【CPU】:华为鲲鹏920
【问题描述】*:很多客户要求国产化,要求用国产数据库,我们选择了达梦。我们的项目使用的是java的hibernate和mysql, 在实体映射的xml文件中新增表的字段,项目启动的时候,会自动执行ddl进行数据库表结构的更新
但是在迁移达梦数据库的时候有个问题,假如我们用空的数据库,可以正常建表,项目可以正常启动。如果是升级项目,数据库的字段有所新增和改动,在启动的时候会报大量的ddl错误,几乎是所有的表。
报错如下:
2022-08-03 09:52:45,476 WARN org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl [localhost-startStop-1] GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement
at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) ~[hibernate-core-5.2.18.Final.jar:5.2.18.Final]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:559) [hibernate-core-5.2.18.Final.jar:5.2.18.Final]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:504) [hibernate-core-5.2.18.Final.jar:5.2.18.Final]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.createTable(AbstractSchemaMigrator.java:277) [hibernate-core-5.2.18.Final.jar:5.2.18.Final]
Caused by: dm.jdbc.driver.DMException: 第1 行附近出现错误:
对象[am_access_access_control_list]已存在
at dm.jdbc.driver.DBError.throwException(DBError.java:670) ~[DmJdbcDriver18.jar:- 8.1.1.190 - Production]
把具体的报错的语句抓出来