作为数据产品线的一员,装数据库就是我的宿命了,今天要搞的是HANA~~

这个数据库是SAP搞的,仅用于连接测试直接就上docker版。

1 下载镜像

由于众所周知的原因,直接拉镜像是不可以的。kimi提供了一个国内的下载地址,2025年可用:

docker pull docker.1ms.run/saplabs/hanaexpress

下载后用docker images查看:

REPOSITORY TAG IMAGE ID CREATED SIZE

docker.1ms.run/saplabs/hanaexpress latest 5d47f222e180 4 months ago 4.01GB

2 初次启动

启动脚本有了一个现成的,使用的是读取json的方式获取缺省密码。

docker run -p 39013:39013 -p 39017:39017 -p 39041-39045:39041-39045 -p 1128-1129:1128-1129 -p 59013-59014:59013-59014 \
-v /data/express_edition:/hana/mounts \
--ulimit nofile=104857:104857 \
--hostname 89b7ff9b5f75 \
--sysctl kernel.shmmax=1073741824 \
--sysctl net.ipv4.ip_local_port_range='40000 60999' \
--sysctl kernel.shmall=8388608 \
--name express_edition \
docker.1ms.run/saplabs/hanaexpress:latest \
--passwords-url file:///hana/mounts/password.json \
--agree-to-sap-license

其中-v是映射文件系统,将宿主机的/data/express_edition映射到docker里的/hana/mounts,然后读密码的时候,是读取的/hana/mounts/password.json

password.json内容

{"master_password":"密码"}

对于启动docker用户,/data/express_edition目录和json文件都需要有读写权限,因为启动后,docker程序会删掉这个文件。

--hostname 89b7ff9b5f75

这句中的hostname实际是第一次启动抛出的异常中的值:

ERROR: Unknown host '41de8d3e6297'. The container must be started with one of these host names:

ERROR: 89b7ff9b5f75

这个hostname改了好几遍也不成功,算了,不和它较劲了,如果下次docker重启变了再改吧。

3 进命令行

先进docker

docker exec -it 容器id bash

hdbsql -n localhost:39017 -u SYSTEM -p 密码

注意,上面那个命令-p之后要带着密码

进入命令行后有一些简单查询

SELECT * FROM M_DATABASE;

查看库名,39017进入的是SYSTEMDB

SELECT SCHEMA_NAME FROM SCHEMAS

查看schema,有一个缺省的叫SYSTEM

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐