无法从mac os x上的ballerina.io连接到mysql

vnjpjtjt  于 2021-06-20  发布在  Mysql
关注(0)|答案(4)|浏览(353)

我想建立一个简单的应用程序,连接到远程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库有关。
你有什么办法让它在MacOSX上工作吗?

$ 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
oiopk7p5

oiopk7p51#

我无法连接到mysql,我面临一个驱动程序示例错误。我解决了!我不确定我的答案张贴在好地方,但我认为这将是一个很好的资源,以解决一些问题与mysql连接问题在芭蕾舞。
在我的终端:echo$ballerina\u home/library/ballerina/ballerina-0.990.2在正确的位置复制好的jar!
去:http://central.maven.org/maven2/mysql/mysql-connector-java/ 我已经下载了最新的稳定版本(在编写8.0.15时)。在$ballerina\u home/bre/lib中复制jar/
我以前的版本有个错误。
请注意,您的jar具有正确的扩展名(.jar不是同名的存储库)。
还要确保已经完成了建议(安装jar时请参阅oracle的文档,即设置类路径)
在终端中,设置类路径:export classpath=$classpath:/library/ballerina/ballerina-0.990.2/bre/lib/mysql-connector-java-8.0.15
那就行了!

w8f9ii69

w8f9ii692#

您是否已将mysql jdbc驱动程序复制到 BALLERINA_HOME/bre/lib 文件夹?
你可以使用 which ballerina 命令。
您可以从下载mysql jdbc驱动程序http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.6/mysql-connector-java-5.1.6.jar

ct2axkht

ct2axkht3#

首先,最新的芭蕾舞版本是0.981.0。如果你能使用最新的版本那就太好了,因为它会包含最新的错误修复和改进。
在ballerina中,有一个通用的jdbc客户机,可以用来连接到任何具有jdbc驱动程序的数据库。另外,对于mysql和h2,有两个客户机是专门为这两个数据库实现的。
当连接到mysql时,您可以使用通用jdbc客户机或mysql特定客户机。建议使用mysql特定的客户端。
在您的代码片段中,我可以看到您正在使用jdbc客户机。如上所述,端点配置不正确。
下面是通用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\u home}/bre/lib。
即使更正了配置并复制了驱动程序,如果您仍然面临此问题,请检查是否在运行bal文件和共享的位置创建了名为ballerina-internal.log的文件。另外,请共享您使用的mysql数据库和驱动程序版本。

np8igboo

np8igboo4#

问题可能在 jiraDB 终结点配置。根据api文档,数据库url的配置如下 url 而不是 host .

相关问题