0

我正在尝试将我的网站上线。为此,我有一个 debian 和一个码头服务器。当我尝试访问我的网站时,它会显示我的主页,所以,这没关系。

但是,当我尝试登录时,它给我一个错误消息。

它正在使用以下配置在我的本地计算机上运行:

<?xml version="1.0" encoding="utf-8"?>
<domain project-version="6">
    <map name="datamap"/>

    <node name="datanode"
         factory="org.apache.cayenne.configuration.server.XMLPoolingDataSourceFactory"
        >
        <map-ref name="datamap"/>
        <data-source>
            <driver value="com.mysql.jdbc.Driver"/>
            <url value="jdbc:mysql://127.0.0.1:3306/database"/>
            <connectionPool min="1" max="10"/>
            <login userName="username" password="password"/>
        </data-source>
    </node>
</domain>

所以,我验证了用户名和密码是好的。我尝试使用新配置在我自己的机器上执行我的网站:

<url value="jdbc:mysql://serverip:3306/database"/>

我错过了什么?

错误信息是:

在此处输入图像描述

(对不起,我正在尝试找到可以在服务器上找到码头日志的位置,我将使用完整堆栈对其进行更新)

我想我忘记了一个信息?我确定我的密码和服务器上 mysql 的登录名。我正在使用 SSH,配置在我的工作台中: 在此处输入图像描述

我正在使用 maven,所以我在 pom.xml 中添加了 mysql :

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>

我读到这可能是因为我们没有将 mysql 放在类路径中。但是,这应该有效,不是吗?

编辑:我试过了:<url value="jdbc:mysql://serverusername@serverpwd/serverip:3306/database"/>,没有成功......

编辑 2:此配置有效:

<node name="datanode"
    factory="org.apache.cayenne.configuration.server.XMLPoolingDataSourceFactory"
    schema-update-strategy="org.apache.cayenne.access.dbsync.CreateIfNoSchemaStrategy">
    <map-ref name="datamap" />
    <data-source>
        <driver value="com.mysql.jdbc.Driver" />
        <url value="jdbc:mysql://127.0.0.1/database" />
        <connectionPool min="1" max="1" />
        <autoReconnect> true</autoReconnect>
        <failOverReadOnly>  false</failOverReadOnly>
        <login userName="userName" password="password" />
    </data-source>
</node>
4

1 回答 1

1

连接可能会超时。尝试将此添加到 URL:?connectTimeout=0&autoReconnect=true。要获得更可靠的结果,请尝试使用具有适当重新连接属性的外部连接池,例如Hikari 。可以通过 ServerRuntime.builder(..).dataSource(dataSource).. 指示 Cayenne 在启动时使用外部连接池。

于 2017-09-17T14:03:24.690 回答