Linux环境下达梦数据库的安装和使用
因为windows的数据库缺少参数,或者说不能实现使用外部函数的功能,所以将数据库环境更换成了Linux。
系统为CentOS7.6,腾讯云的一个服务器。
Java安装残留问题
Java 环境变量配置 结果有几个command not found 但是不影响Java使用?
软连接设置,第一次设置错误,第二次提示文件已存在,可能有影响?
经验证,以上二者不是问题。
数据库初始化
数据库在服务器的安装队友搞定了。
这里进行数据库的初始化,理论上,只需要运行/bin/dminit即可。
实际上当然出了一堆问题,包括但不限于没有权限,数据库服务无法启动,注册服务脚本失败之类的。
但是用万能的重装解决了。
目前建立了数据库,数据库的参数中只指定了数据库保存的路径,其余信息应当和默认一致,或者可以查看dm.ini。
数据库连接
使用自带的连接工具DIsql,直接运行即可。
之后用简单的SQL语句建立了一个测试表,如下:
create table student_score (
id int primary key identity,
name varchar(20) not null,
score varchar(100) not null
)
insert into student_score (name, score) values ('李四', 60)
执行后队友发现看不到结果,想到需要提交,查询得到提交命令是commit。
执行之后队友就能看见了。
外部函数
修改dm.ini ENABLE_EXTERNAL_CALL = 1
重启DMService服务
修改agent.ini,ap_enable = true ap_port = EXTERNAL_JFUN_PORT
启动dmagent服务
导入jar包
遇到的问题
导出的Java包一定要有包名
原因大概是因为,如果不指定包,Java会自动分配一个default包,这个包不是不存在而是隐藏了,它还是有包名的,所以应当自己指定一个。
insert into student_score (name, score) values (‘王五’, test(‘0’));
这段语句,是从一次不能正常执行的记录上复制下来的,一个字没动,又输进去,就能运行了。
[ln@VM-4-14-centos bin]$ ./disql
disql V8
username:SYSDBA
password:
Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 2.387(ms)
SQL> select test('123');
LINEID TEST('123')
---------- ---------------
1 已加密:123
used time: 2.729(ms). Execute id is 404.
SQL> insert into student_score (name, score) values ('王五',
2 select test('0'));
insert into student_score (name, score) values ('王五',
select test('0'));
select test('0'));
*
line 2, column 7, nearby [select] has error[-2007]:
Syntax error.
used time: 0.206(ms). Execute id is 0.
SQL> select test('0');
LINEID TEST('0')
---------- -------------
1 已加密:0
used time: 0.998(ms). Execute id is 405.
SQL> insert into student_score (name, score) values ('王五', test('0'));
2 /
3 ;
4 '
5 ;
insert into student_score (name, score) val王五', test('0'));
/
;
'
;
insert into student_score (name, score) val王五', test('0'));
*
line 1, column 79, nearby [val王五] has error[-2007]:
Syntax error.
used time: 0.169(ms). Execute id is 0.
SQL> insert into student_score (name, score) values ('王五', test('0'));
affect rows 1
used time: 0.899(ms). Execute id is 406.
SQL> select * from student_score
2 ;
LINEID ID NAME SCORE
---------- ----------- ------ -------------
1 3 张三 100
2 4 李四 60
3 5 王五 已加密:0
used time: 0.257(ms). Execute id is 407.
SQL> exit
[ln@VM-4-14-centos bin]$ ./disql
disql V8
username:SYSDBA
password:
Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 2.359(ms)
看起来是服务器的延迟问题,字打太快了,有些字符被吞了?
解决方式是把putty换成了Xshell,希望能解决问题吧,大概。