为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:linux docker容器
【CPU】:
【问题描述】*:程序执行公司初始化脚本出错
错误信息:
org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #1 of file [D:\devops_cache\app_temp\6e756cea-4b5e-4069-a91e-41771370c456\sql\framework_i18n_dm.sql]: drop table if exists EP_SYS_ACCOUNTS_DESKTOP cascade constraints; nested exception is dm.jdbc.driver.DMException: 第 1 行, 第 4 列[drop]附近出现错误: 语法分析出错 at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:492) at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.populate(ResourceDatabasePopulator.java:238) at com.haiyisoft.cloud.devops.util.DatasourceUtil.executeInitSql(DatasourceUtil.java:189) at com.haiyisoft.cloud.devops.util.DatasourceUtil.datasourceInit(DatasourceUtil.java:139) at com.haiyisoft.cloud.devops.app.service.impl.AppCreateServiceImpl.initAppSqlToAppDs(AppCreateServiceImpl.java:544) at com.haiyisoft.cloud.devops.app.service.impl.AppCreateServiceImpl.initAppDataSource(AppCreateServiceImpl.java:376) at com.haiyisoft.cloud.devops.app.service.impl.AppCreateServiceImpl.startCreateApp(AppCreateServiceImpl.java:174) at com.haiyisoft.cloud.devops.app.util.AppCreateUtil.startCreateApp(AppCreateUtil.java:34) at com.haiyisoft.cloud.devops.app.job.AppCreateJob.run(AppCreateJob.java:26) at java.lang.Thread.run(Thread.java:748) Caused by: dm.jdbc.driver.DMException: 第 1 行, 第 4 列[drop]附近出现错误: 语法分析出错 at dm.jdbc.driver.DBError.throwException(DBError.java:635) at dm.jdbc.c.a.n.J(MSG.java:221) at dm.jdbc.c.a.n.G(MSG.java:181) at dm.jdbc.c.a.n.F(MSG.java:162) at dm.jdbc.c.a.a(DBAccess.java:759) at dm.jdbc.c.a.a(DBAccess.java:195) at dm.jdbc.driver.DmdbStatement.executeInner(DmdbStatement.java:695) at dm.jdbc.driver.DmdbStatement.do_execute(DmdbStatement.java:175) at dm.jdbc.driver.DmdbStatement.do_execute(DmdbStatement.java:167) at dm.jdbc.driver.DmdbStatement.execute(DmdbStatement.java:1197) at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:471) ... 9 more 语法分析出错
报错位置前后脚本:
/*==============================================================*/
/* DBMS name: DM Database Server 64 V8 */
/* Created on: 2022/4/25 10:00:00 */
/*==============================================================*/
drop table if exists EP_SYS_ACCOUNTS_DESKTOP cascade constraints;
drop table if exists EP_SYS_ACCOUNTS_WIDGETS cascade constraints;
drop table if exists EP_SYS_ACCOUNT_LOOK_STYLE cascade constraints;
执行脚本部分代码:
try {
//添加sql脚本文件
File file = new File(filePath);
List<File> files = getListFile(file, driverClassName);
for (File item : files) {
populator.addScript(new FileSystemResource(item));
}
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUrl(url); //url:jdbc:dm://172.10.10.10:35305/SYSDBA
dataSource.setDriverClassName(driverClassName); //dm.jdbc.driver.DmDriver
dataSource.setUsername(username); //SYSDBA
dataSource.setPassword(password); //SYSDBA
connection = dataSource.getConnection();
populator.populate(connection);
} catch (Exception e) {....
https://eco.dameng.com/community/article/ea82c4859f3a509443aea48f1ae4ff9c
开启jdbc日志发上来看看
1.整个sql脚本用数据库管理工具跑通过了
2.我本地安装了8.1.2.84版本,url调整为我本地的库,并且驱动也调整为8.1.2.84,程序测试报错依旧
你的程序加载了达梦的方言包了吗?如果没有,把达梦的驱动和方言包都加载一下
1、尝试直接到数据库中执行该drop语句是否报错?
2、当前的数据库版本和驱动包的版本分别是多少?建议驱动包和数据库版本保持一致。