无法在 Mac OS 上从 Ballerina.io 连接到 MySQL X
Unable to connect to MySQL from Ballerina.io on Mac OS X
我想构建一个连接到远程 MySQL 服务器的简单应用程序。但是,我无法让它工作。
import ballerina/io;
import ballerina/jdbc;
import ballerina/mysql;
endpoint jdbc:Client jiraDB {
host: "jdbc:mysql://DB-SERVER:3306/jira",
username: "jira",
password: "PWD",
poolOptions: { maximumPoolSize: 5 }
};
type Domain record {
string domain,
string jira,
};
function main(string... args) {
var ret = jiraDB->select("SELECT * FROM `domains`", ());
table domainTable;
match ret {
table tableReturned => domainTable = tableReturned;
error e => io:println("Select data from domains table failed: " + e.message);
}
while(domainTable.hasNext()) {
var domain = <Domain>domainTable.getNext();
match domain {
Domain d => io:println("Domain: " + d.domain);
error e => io:println("Error in get employee from table: "
+ e.message);
}
}
}
MySQL 的结构并不重要。我认为这与缺少/错误使用 JDBC/MySQL 库有关。
请问您有什么想法可以让它在 Mac OS X 上运行吗?
$ ballerina run hello.bal
error: ballerina/runtime:CallFailedException, message: call failed
at ..<stop>(hello.bal:5)
caused by error
at ballerina/jdbc:stop(endpoint.bal:66)
我正在使用最新的 Mac OS X 与:
$ ballerina --version
Ballerina 0.980.1
您是否已将 MySQL JDBC 驱动程序复制到 BALLERINA_HOME/bre/lib
文件夹?
您可以使用 which ballerina
命令找到芭蕾舞家。
您可以从 http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.6/mysql-connector-java-5.1.6.jar
下载 mysql jdbc 驱动程序
问题可能出在 jiraDB
端点配置中。根据 API docs,数据库 URL 的配置将被指定为 url
而不是 host
。
首先,最新的ballerina版本是0.981.0。如果您可以使用最新版本,那就太好了,因为它会包含最新的错误修复和改进。
在 Ballerina 中,有一个通用的 jdbc 客户端,可用于连接到任何具有 jdbc 驱动程序的数据库。此外,对于 mysql 和 h2,有两个专门为这两个数据库实现的客户端。
连接到 mysql 时,您可以使用通用 jdbc 客户端或 mysql 特定客户端。建议使用 mysql 特定客户端。
在您的代码片段中,我可以看到您正在使用 jdbc 客户端。正如 Anoukh 上面提到的,端点配置不正确。
以下是通用 jdbc 客户端端点的示例配置。
endpoint jdbc:Client testDB {
url: "jdbc:mysql://localhost:3306/testdb",
username: "user1",
password: "pass1",
poolOptions: { maximumPoolSize: 5 }
};
下面是 mysql 客户端端点的示例配置。
endpoint mysql:Client testDB {
host: "localhost",
port: 3306,
name: "testDB",
username: "user1",
password: "pass1",
poolOptions: { maximumPoolSize: 5 }
};
为了使用任一客户端,您需要将 mysql jdbc 驱动程序复制到 ${BALLERINA_HOME}/bre/lib.
即使在更正您的配置并复制驱动程序后,如果您仍然遇到问题,请检查您所在的位置是否创建了名为 ballerina-internal.log 的文件 运行 您的 bal 文件并共享。另外请分享您正在使用的 mysql 数据库和驱动程序版本。
我无法连接到 Mysql,我遇到了驱动程序实例错误。我解决了!我不确定 post 我的答案是否合适,但我认为这将是解决 Ballerina 中一些 Mysql 连接问题的好资源。
在我的终端中:echo $BALLERINA_HOME
/Library/Ballerina/ballerina-0.990.2
把好的jar复制到合适的地方!
转到:http://central.maven.org/maven2/mysql/mysql-connector-java/
我已经下载了最新的稳定版本(在撰写本文时为 8.0.15)。
将 jar 复制到 $BALLERINA_HOME/bre/lib/
我之前的版本有错误。
注意你的 jar 有正确的扩展名(.jar 不是同名的存储库)。
还要确保已完成建议(安装 jar 时请参阅 Oracle 文档,即设置 class 路径)
在您的终端中,设置 class 路径:
导出 CLASSPATH=$CLASSPATH:/Library/Ballerina/ballerina-0.990.2/bre/lib/mysql-connector-java-8.0.15
那就可以了!
我想构建一个连接到远程 MySQL 服务器的简单应用程序。但是,我无法让它工作。
import ballerina/io;
import ballerina/jdbc;
import ballerina/mysql;
endpoint jdbc:Client jiraDB {
host: "jdbc:mysql://DB-SERVER:3306/jira",
username: "jira",
password: "PWD",
poolOptions: { maximumPoolSize: 5 }
};
type Domain record {
string domain,
string jira,
};
function main(string... args) {
var ret = jiraDB->select("SELECT * FROM `domains`", ());
table domainTable;
match ret {
table tableReturned => domainTable = tableReturned;
error e => io:println("Select data from domains table failed: " + e.message);
}
while(domainTable.hasNext()) {
var domain = <Domain>domainTable.getNext();
match domain {
Domain d => io:println("Domain: " + d.domain);
error e => io:println("Error in get employee from table: "
+ e.message);
}
}
}
MySQL 的结构并不重要。我认为这与缺少/错误使用 JDBC/MySQL 库有关。
请问您有什么想法可以让它在 Mac OS X 上运行吗?
$ ballerina run hello.bal
error: ballerina/runtime:CallFailedException, message: call failed
at ..<stop>(hello.bal:5)
caused by error
at ballerina/jdbc:stop(endpoint.bal:66)
我正在使用最新的 Mac OS X 与:
$ ballerina --version
Ballerina 0.980.1
您是否已将 MySQL JDBC 驱动程序复制到 BALLERINA_HOME/bre/lib
文件夹?
您可以使用 which ballerina
命令找到芭蕾舞家。
您可以从 http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.6/mysql-connector-java-5.1.6.jar
下载 mysql jdbc 驱动程序问题可能出在 jiraDB
端点配置中。根据 API docs,数据库 URL 的配置将被指定为 url
而不是 host
。
首先,最新的ballerina版本是0.981.0。如果您可以使用最新版本,那就太好了,因为它会包含最新的错误修复和改进。
在 Ballerina 中,有一个通用的 jdbc 客户端,可用于连接到任何具有 jdbc 驱动程序的数据库。此外,对于 mysql 和 h2,有两个专门为这两个数据库实现的客户端。
连接到 mysql 时,您可以使用通用 jdbc 客户端或 mysql 特定客户端。建议使用 mysql 特定客户端。
在您的代码片段中,我可以看到您正在使用 jdbc 客户端。正如 Anoukh 上面提到的,端点配置不正确。
以下是通用 jdbc 客户端端点的示例配置。
endpoint jdbc:Client testDB {
url: "jdbc:mysql://localhost:3306/testdb",
username: "user1",
password: "pass1",
poolOptions: { maximumPoolSize: 5 }
};
下面是 mysql 客户端端点的示例配置。
endpoint mysql:Client testDB {
host: "localhost",
port: 3306,
name: "testDB",
username: "user1",
password: "pass1",
poolOptions: { maximumPoolSize: 5 }
};
为了使用任一客户端,您需要将 mysql jdbc 驱动程序复制到 ${BALLERINA_HOME}/bre/lib.
即使在更正您的配置并复制驱动程序后,如果您仍然遇到问题,请检查您所在的位置是否创建了名为 ballerina-internal.log 的文件 运行 您的 bal 文件并共享。另外请分享您正在使用的 mysql 数据库和驱动程序版本。
我无法连接到 Mysql,我遇到了驱动程序实例错误。我解决了!我不确定 post 我的答案是否合适,但我认为这将是解决 Ballerina 中一些 Mysql 连接问题的好资源。
在我的终端中:echo $BALLERINA_HOME /Library/Ballerina/ballerina-0.990.2 把好的jar复制到合适的地方!
转到:http://central.maven.org/maven2/mysql/mysql-connector-java/ 我已经下载了最新的稳定版本(在撰写本文时为 8.0.15)。 将 jar 复制到 $BALLERINA_HOME/bre/lib/
我之前的版本有错误。
注意你的 jar 有正确的扩展名(.jar 不是同名的存储库)。
还要确保已完成建议(安装 jar 时请参阅 Oracle 文档,即设置 class 路径)
在您的终端中,设置 class 路径: 导出 CLASSPATH=$CLASSPATH:/Library/Ballerina/ballerina-0.990.2/bre/lib/mysql-connector-java-8.0.15
那就可以了!