- 制作神通数据库镜像
1)、下载docker.io/centos:7.9.2009镜像,docker pull docker.io/centos:7.9.2009
2)、运行一个容器,docker run -itd --name shentong -p 2003:2003 --privileged=true --restart=always -v /sys/fs/cgroup:/sys/fs/cgroup docker.io/centos:7.9.2009 /usr/sbin/init
3)、注册神通数据库官网账号,下载神通数据库安装包(试用版下载 - 神舟通用版本,我下载的是ShenTong7.0.8_342.139_win64.zip
4)、将数据库上传到步骤2中创建的容器中去,我是拷贝到了/home目录下;
5)、进入步骤2创建的shentong容器内,解压,进入文件夹,修改setup文件的权限,增加可执行权限;
6)、运行 ./setup -console进行安装,安装选择英文,因为容器内没有中文;我自定义了安装目录为/shentong,数据库名称为OSRDB;
7)、安装完成后,尝试启动,启动命令为/etc/init.d/oscardb_OSRDBd start ;红色字体为你所创建的数据库名称;
8)、如果启动不成功,可以到安装目录下./log/数据库名/下,查看elog开头的日志;
9)、我这里运到了无法识别系统变量的错误,echo $SZ_OSCAR_HOME无法正确输出目录;使用source /etc/profile就好了;
10)、退出容器,重启shentong容器,再次进入容器,需要再次手动启动数据库;在根目录下编写shell脚本,命名为shentong_start.sh,增加可执行权限;
内容如下:
#!/bin/bash
source /etc/profile
/etc/init.d/oscardb_OSRDBd start
11)、退出容器,将当前容器保存为镜像,docker commit shentong shentong:v1.0;
12)、再创建一个容器,docker run -itd --name shentong2 -p 12003:2003 --privileged=true --restart=always -v /sys/fs/cgroup:/sys/fs/cgroup -v /var/log/shentong:/shentong/log shentong:v1.0 /bin/bash shentong_start.sh ;无法正确启动,一直在重启,目前未找到问题;
但是运行docker run -itd --name shentong2 -p 12003:2003 --privileged=true --restart=always -v /sys/fs/cgroup:/sys/fs/cgroup -v /var/log/shentong:/shentong/log shentong:v1.0 /bin/bash命令启动容器,进入容器,再运行shentong_start.sh,可以正常启动。
- 安装神通数据库的驱动
1)、参考《神通数据库-数据库开发手册.pdf》文档安装STPython
在安装目录/shentong/drivers/STPython下找到对应python版本的文件,拷贝到业务容器中,我用的是STPython-2.0.15-cp38-cp38-linux_x86_64.whl;
使用pip3命令进行安装即可, pip3 install STPython-2.0.15-cp38-cp38-linux_x86_64.whl
2)、参考《神通数据库-数据库开发手册.pdf》文档安装aci
在安装目录/shentong/drivers/aci下找到对应的libaci.so文件,将其拷贝到业务容器中/usr/lib64目录下;修改LD_LIBRARY_PATH的配置,在后面加上:/usr/lib64,其实不加也可以;
3)、按照《神通数据库-数据库开发手册.pdf》文档中33.2.4章节,判断依赖aci的位置是否正确;
4)、按照《神通数据库-数据库开发手册.pdf》文档中按照django所需要的包;
将 contrib\gis\db\backends\oscar 文 件 夹 拷 贝 到 django 在 Python 中 的 安 装 目 录 下: $django\contrib\gis\db\backends 下;
将 db\backends\oscar 文 件 夹 拷 贝 到 django 包 中 $django\db\backends 下;
- 修改django数据库配置进行测试
1)、修改数据库配置;
DATABASES = {
"default": {
"ENGINE": DATABASE_ENGINE,
"NAME": DATABASE_NAME,
"USER": DATABASE_USER,
"PASSWORD": DATABASE_PASSWORD,
"HOST": DATABASE_HOST,
"PORT": DATABASE_PORT
}
}
2)、python3 make migrations.生成数据表;
3)、python3 make migrate生成数据表
4)、python manage.py runserver 0.0.0.0:8000
- 业务运行测试
1)、运行过程中,发现model中的bool类型在数据库中都存储成了数字;
2)、不能支持update_or_create和get_or_create这两个函数;
3)、神通数据库中varchar最大长度只支持8000,这个需要注意一下。
- DBeaver连接神通
类名: com.oscar.Driver
URL模板:jdbc:oscar://{host}:{port}/[{database}]
默认端口:2003
默认数据库:OSCAR
默认用户名:SYSDBA
库中添加oscarJDBC16.jar这个包,在网上都能检索到,比如CSDN;