将 Postgres 连接到 Ballerina,找不到 bre/lib 文件夹
Connecting Postgres to Ballerina, can't find bre/lib folder
芭蕾舞版本
jBallerina 1.2.6
Language specification 2020R1
Update Tool 0.8.8
我已经安装了 Ballerina,一切正常,但现在我正在尝试在 postgres 上使用我的本地安装,但我无法让它工作。
阅读文档时它说要将 postgres JDBC 驱动程序复制到目录 BALLERINA_HOME/bre/lib.. 不存在这样的目录。
所以首先我做了一个“which ballerina”,发现它指向 /usr/bin/ballerina
当我来到这里时,它只是 link 到 ballerina 可执行文件而不是目录,可执行文件位于 /usr/lib/ballerina/bin
所以我将驱动程序复制到 usr/lib/ballerina/lib 希望它能工作,但没有。
然后我在 Ballerina.toml 中阅读了有关创建项目和配置它的信息(使用命令行生成项目和模块)
这是我的 TOML 文件
[project]
org-name= "alexmerced"
version= "0.1.0"
[platform]
target = "java8"
[[platform.libraries]]
artafactId = "postgresql"
version = "42.2.14"
path = "/usr/lib/ballerina/bre/lib/postgresql-42.2.14.jar"
groupId = "org.postgresql"
modules = ["samplemodule"]
[dependencies]
当我 运行 模块(未构建,运行)时,我仍然遇到相同的缺少驱动程序错误。
我尝试在 /user/lib/ballerina 中创建 bre/lib 导演,但这似乎也不起作用。
我得到的错误如下:
WARNING: Incompatible JRE version '11.0.7' found. This ballerina program supports running on JRE version '1.8.*'
error: {ballerinax/java.jdbc}ApplicationError message=error in sql connector configuration: Failed to get driver instance for jdbcUrl=jdbc:postgresql://localhost:5432/test?useSSL=false:No suitable driver
at ballerinax.java_jdbc:createClient(client.bal:137)
ballerinax.java_jdbc.Client:__init(client.bal:27)
ballerinax.java_jdbc.Client:$__init$(client.bal:21)
这是我正在尝试的模块代码运行
import ballerina/io;
// import ballerina/jsonutils;
import ballerina/time;
import ballerinax/java.jdbc;
jdbc:Client testDB = new ({
url: "jdbc:postgresql://localhost:5432/test?useSSL=false",
username: "test",
password: "test",
dbOptions: {useSSL: false}
});
type Bird record {
int id;
int age;
string name;
time:Time insertedTime;
};
public function main() {
//RENAME PRINT
var print = io:println;
var ret = testDB->update("CREATE TABLE bird(id INT AUTO_INCREMENT, " +
"age INT, name VARCHAR(255), insertedTime TIMESTAMP DEFAULT " +
"CURRENT_TIMESTAMP, PRIMARY KEY (id))");
handleUpdate(ret, "Create student table");
}
function handleUpdate(jdbc:UpdateResult|jdbc:Error returned, string message) {
if (returned is jdbc:UpdateResult) {
io:println(message, " status: ", returned.updatedRowCount);
} else {
io:println(message, " failed: ", <string>returned.detail()?.message);
}
}
无需将 Postgresql jar 复制到 Ballerina 安装位置。该 jar 只需要在构建期间由编译器访问即可。当您收到 Incompatible JRE version '11.0.7' found.
警告时,您可能还弄乱了其他东西。 Ballerina 包含正确的 Java 版本:
$ ballerina home
/usr/lib/ballerina/distributions/jballerina-1.2.2
$ ls -d /usr/lib/ballerina/dependencies/jdk8u202-b08-jre/
/usr/lib/ballerina/dependencies/jdk8u202-b08-jre/
$ /usr/lib/ballerina/dependencies/jdk8u202-b08-jre/bin/java -version
openjdk version "1.8.0_202"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_202-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.202-b08, mixed mode)
这是来自工作中的 Ballerina 1.2.2 + Postgresql 项目的 Ballerina.toml
文件:
[project]
org-name= "test"
version= "0.1.0"
[dependencies]
[platform]
target = "java8"
[[platform.libraries]]
module = "main"
path = "../lib/postgresql-42.2.10.jar"
groupId = "org.postgresql"
artafactId = "postgresql"
version = "42.2.10"
请注意 postgresql-42.2.10.jar
的路径是相对于 Ballerina.toml
的位置的,并且这两个文件都在版本控制下。
还要确保您已正确提及所有使用 Postgresql jar 的 Ballerina 模块。在此示例中,我只有一个名为 main
.
的模块
主模块中的数据库设置代码与您的示例相同:
import ballerinax/java.jdbc;
jdbc:Client db = new ({
url: "jdbc:postgresql://localhost:5432/testdb",
username: "testdb",
password: "testdb"
});
芭蕾舞版本
jBallerina 1.2.6
Language specification 2020R1
Update Tool 0.8.8
我已经安装了 Ballerina,一切正常,但现在我正在尝试在 postgres 上使用我的本地安装,但我无法让它工作。
阅读文档时它说要将 postgres JDBC 驱动程序复制到目录 BALLERINA_HOME/bre/lib.. 不存在这样的目录。
所以首先我做了一个“which ballerina”,发现它指向 /usr/bin/ballerina
当我来到这里时,它只是 link 到 ballerina 可执行文件而不是目录,可执行文件位于 /usr/lib/ballerina/bin
所以我将驱动程序复制到 usr/lib/ballerina/lib 希望它能工作,但没有。
然后我在 Ballerina.toml 中阅读了有关创建项目和配置它的信息(使用命令行生成项目和模块)
这是我的 TOML 文件
[project]
org-name= "alexmerced"
version= "0.1.0"
[platform]
target = "java8"
[[platform.libraries]]
artafactId = "postgresql"
version = "42.2.14"
path = "/usr/lib/ballerina/bre/lib/postgresql-42.2.14.jar"
groupId = "org.postgresql"
modules = ["samplemodule"]
[dependencies]
当我 运行 模块(未构建,运行)时,我仍然遇到相同的缺少驱动程序错误。
我尝试在 /user/lib/ballerina 中创建 bre/lib 导演,但这似乎也不起作用。
我得到的错误如下:
WARNING: Incompatible JRE version '11.0.7' found. This ballerina program supports running on JRE version '1.8.*'
error: {ballerinax/java.jdbc}ApplicationError message=error in sql connector configuration: Failed to get driver instance for jdbcUrl=jdbc:postgresql://localhost:5432/test?useSSL=false:No suitable driver
at ballerinax.java_jdbc:createClient(client.bal:137)
ballerinax.java_jdbc.Client:__init(client.bal:27)
ballerinax.java_jdbc.Client:$__init$(client.bal:21)
这是我正在尝试的模块代码运行
import ballerina/io;
// import ballerina/jsonutils;
import ballerina/time;
import ballerinax/java.jdbc;
jdbc:Client testDB = new ({
url: "jdbc:postgresql://localhost:5432/test?useSSL=false",
username: "test",
password: "test",
dbOptions: {useSSL: false}
});
type Bird record {
int id;
int age;
string name;
time:Time insertedTime;
};
public function main() {
//RENAME PRINT
var print = io:println;
var ret = testDB->update("CREATE TABLE bird(id INT AUTO_INCREMENT, " +
"age INT, name VARCHAR(255), insertedTime TIMESTAMP DEFAULT " +
"CURRENT_TIMESTAMP, PRIMARY KEY (id))");
handleUpdate(ret, "Create student table");
}
function handleUpdate(jdbc:UpdateResult|jdbc:Error returned, string message) {
if (returned is jdbc:UpdateResult) {
io:println(message, " status: ", returned.updatedRowCount);
} else {
io:println(message, " failed: ", <string>returned.detail()?.message);
}
}
无需将 Postgresql jar 复制到 Ballerina 安装位置。该 jar 只需要在构建期间由编译器访问即可。当您收到 Incompatible JRE version '11.0.7' found.
警告时,您可能还弄乱了其他东西。 Ballerina 包含正确的 Java 版本:
$ ballerina home
/usr/lib/ballerina/distributions/jballerina-1.2.2
$ ls -d /usr/lib/ballerina/dependencies/jdk8u202-b08-jre/
/usr/lib/ballerina/dependencies/jdk8u202-b08-jre/
$ /usr/lib/ballerina/dependencies/jdk8u202-b08-jre/bin/java -version
openjdk version "1.8.0_202"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_202-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.202-b08, mixed mode)
这是来自工作中的 Ballerina 1.2.2 + Postgresql 项目的 Ballerina.toml
文件:
[project]
org-name= "test"
version= "0.1.0"
[dependencies]
[platform]
target = "java8"
[[platform.libraries]]
module = "main"
path = "../lib/postgresql-42.2.10.jar"
groupId = "org.postgresql"
artafactId = "postgresql"
version = "42.2.10"
请注意 postgresql-42.2.10.jar
的路径是相对于 Ballerina.toml
的位置的,并且这两个文件都在版本控制下。
还要确保您已正确提及所有使用 Postgresql jar 的 Ballerina 模块。在此示例中,我只有一个名为 main
.
主模块中的数据库设置代码与您的示例相同:
import ballerinax/java.jdbc;
jdbc:Client db = new ({
url: "jdbc:postgresql://localhost:5432/testdb",
username: "testdb",
password: "testdb"
});