mysql - 无法从 Mac OS X 上的 Ballerina.io 连接到 MySQL

标签 mysql macos jdbc ballerina

我想构建一个连接到远程 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

最佳答案

首先,最新的芭蕾舞女 Actor 版本是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。

即使在更正配置并复制驱动程序后,如果问题仍然存在,请检查是否在运行 bal 文件并共享的位置创建了名为 ballerina-internal.log 的文件。也请分享您正在使用的mysql数据库和驱动程序版本。

关于mysql - 无法从 Mac OS X 上的 Ballerina.io 连接到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51988037/

相关文章:

php - 如果记录存在,Laravel with() 关系

php - 我无法提交表格

java - JDBC 优化多线程上的 MySql 请求

java - DataOutput数据库实现

mysql - 左连接查询不起作用

mysql - 处理失效订阅的最佳方式

swift - Mac 上的 AVAudioPlayer 无法播放/崩溃

macos - 沙盒中不允许使用 IOKit?

windows - 如何以编程方式更改 Windows 可执行文件和 Mac 应用程序的图标?

java - 错误: MySQLSyntaxErrorException in a java-based web app