在Mac OS X上无法从Ballerina.io连接到MySQL

时间:2018-08-23 14:21:10

标签: 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

4 个答案:

答案 0 :(得分:1)

首先,最新的芭蕾舞演员版本为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数据库和驱动程序版本。

答案 1 :(得分:0)

您是否已将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驱动程序

答案 2 :(得分:0)

问题可能出在"FALSE"端点配置中。根据{{​​3}},数据库URL的配置应为jiraDB而不是url

答案 3 :(得分:0)

我无法连接到Mysql,并且遇到了驱动程序实例错误。我解决了!我不确定将答案发布在哪里,但我认为这将是解决芭蕾舞女演员Mysql连接问题的好资源。

在我的终端中:echo $ BALLERINA_HOME /图书馆/芭蕾舞女演员/芭蕾舞女演员-0.990.2 在正确的位置复制好罐子!

转到:http://central.maven.org/maven2/mysql/mysql-connector-java/ 我已经下载了最新的稳定版本(撰写本文时为8.0.15)。 将罐子复制到$ BALLERINA_HOME / bre / lib /

我以前的版本有错误。

请注意您的jar具有正确的扩展名(.jar而不是具有相同名称的存储库)。

还请确保已完成建议(安装jar时,请参阅Oracle的文档,即设置类路径)

在您的终端中,设置类路径: 导出CLASSPATH = $ CLASSPATH:/Library/Ballerina/ballerina-0.990.2/bre/lib/mysql-connector-java-8.0.15

那就可以了!