最近在做一个很搓(code clone detection )的项目, 开发主用了H2 database. 无奈之下只能跟着学习, 遇坑无数, 记录下来,留给后来踩到的人一个启示。
Windows:
H2 data base set up
使用windows 必须要安装 odbc for PostgreSQL
https://ftp.postgresql.org/pub/odbc/versions/msi/psqlodbc_11_00_0000-x64.zip
使用命令 java -cp ./* org.h2.tools.Server (坑1, 官网上的命令是错的不能用!!!)启动服务PostgreSQL
1.java -cp ./* org.h2.tools.Server -pg -key codeclones "C:\BCEvalVersion\bcb;cipher=aes"
解释: C:\BCEvalVersion\bcb 中, ”bcb“ 是H2 数据库文件名, 不用带后缀
2.使用python 代码
import psycopg2 import psycopg2.extras conn = psycopg2.connect(database="codeclones", user="sa", host = dbhost, port = dbport, password="sa")
坑二: 傻逼的垃圾数据库设计协议连接时不能使用空密码, 但是默认是空密码。 于是必须进入数据库把密码改了,我这里改成sa
2.ALTER USER SA SET PASSWORD 'sa' // reset password or client with python can not login with 'sa' ! (That is quite stupid design!!!!)
Linux:版本的问题较少,安装好需要的安装包即可
pip install jaydebeapi
但执行速度相当慢。
https://stackoverflow.com/questions/41493117/connect-python-to-h2
conn = jaydebeapi.connect("org.h2.Driver", "jdbc:h2:~/test", ["sa", ""], "/Users/angelo/websites/GEPR/h2/bin/h2-1.4.197.jar",)