为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:1-3-100-2024.01.15-215128-20081-STD,基于dm8_20240422_rev215128_x86_rh6容器运行,
【操作系统】:CentOS7,使用docker运行dm8
【CPU】:Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
【问题描述】*:使用disql命令执行SQL脚本,脚本内容是建表语句,当建表语句中有COMMENT 中文备注时,报错-2007,但SQL拿出来单独在客户端中执行时没有问题。
【执行脚本】:/opt/dmdbms/bin/disql aaa/aaaa `/usr/local/dm8/navite-create.sql
【navite-create.sql】:CREATE TABLE IF NOT EXISTS cxdy_column_setting (
CXDY_COLUMN_ID varchar(32) NOT NULL COMMENT '字段ID',
CXDY_COLUMN_USERID varchar(32) NOT NULL COMMENT '用户ID',
CXDY_COLUMN_FUNCTION_CODE varchar(128) NOT NULL COMMENT '方法编码',
CXDY_COLUMN_FIELD varchar(128) NOT NULL COMMENT '属性值',
CXDY_COLUMN_ISHIDE varchar(1) NOT NULL DEFAULT '1' COMMENT '是否隐藏',
CXDY_COLUMN_SHEETINDEX varchar(2) NOT NULL COMMENT 'sheet页索引',
CXDY_COLUMN_SEQ int NULL DEFAULT 0 COMMENT '序号',
PRIMARY KEY (CXDY_COLUMN_ID)
);
【报错截图】:
启动dm8时,运行命令:docker run --name dm8 --privileged=true -p 5236:5236 -e SYSDBA_PWD=aaaa -e CHG_PASSWD=aaaa -e CASE_SENSITIVE=0 -e PAGE_SIZE=16 -e EXTENT_SIZE=32 -e BLANK_PAD_MODE=0 -e LOG_SIZE=1024 -e UNICODE_FLAG=1 -e LENGTH_IN_CHAR=0 -e INSTANCE_NAME=dm8 -d dm8:dm8_20240422_rev215128_x86_rh6
@达梦值班人员 为啥给别人回复了,不给我回复。
sql看着没问题,把navite-create.sql文件放在服务器上,disql登录数据库直接执行sql文件试下
./disql 账号/密码
start /opt/navite-create.sql
去掉中文就可以,为啥中文就报错
查询字符集是1,表示UTF8编码。SQL脚本也是UNIX格式,UTF8编码。
真实服了,这啥玩意啊。
都是UTF8编码,disql进入后,必须先执行SET CHAR_CODE UTF8;,再执行SQL脚本。
把SET CHAR_CODE UTF8;这个写入SQL脚本第一行也不行,必须单独输入。
这让人怎么写数据导入脚本?
我的需求很简单,一个SQL文件,里面都是SQL语句,需要执行一个命令将SQL导入到数据库中。
请问该如何编写?
啊啊啊,谁能来拯救我
问题已解决。加个-C 参数可以配置环境变量参数。
执行命令示例:/opt/dmdbms/bin/disql -C "SET CHAR_CODE UTF8" 用户名/密码 `/usr/local/dm8/navite-create.sql
容器镜像:
dm8:dm8_20240422_rev215128_x86_rh6_64