为啥我将网站放在 debian 服务器上时出现 cayenne 连接错误

Posted

技术标签:

【中文标题】为啥我将网站放在 debian 服务器上时出现 cayenne 连接错误【英文标题】:Why I've a cayenne connection error when I put my web site on a debian server为什么我将网站放在 debian 服务器上时出现 cayenne 连接错误 【发布时间】:2017-09-07 11:19:43 【问题描述】:

我正在尝试将我的网站上线。 为此,我有一个 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 放在类路径中。但是,这应该行得通,不是吗?

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

编辑 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>

【问题讨论】:

该错误是一般的连接错误。与您的凭据无关。您的数据库是否与您的 Jetty 在同一台机器上运行?尝试 ssh 到服务器,并在其中执行以下命令:“netstat -an |grep 3306”这将显示数据库是否存在并且正在使用预期的端口。 哦,好吧,因为我也遇到了凭证问题!我会这样做并给你答案,非常感谢,我仍然阻止 结果是:tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN :( 不知道?我仍然没有任何想法阻止这个 我刚刚发布了答案。请注意,Cayenne 将忽略 和 标记。所以他们真的什么都不做。这些参数需要添加到里面的URL 【参考方案1】:

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

【讨论】:

现在,我没有任何问题。但是,我不能将我的数据存储在数据库中。这是一种奇怪的行为!

以上是关于为啥我将网站放在 debian 服务器上时出现 cayenne 连接错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 UIImageView 放在故事板上时会模糊?

当我将鼠标悬停在另一个 div 上时,如何使文本出现在一个 div 中?

当我将鼠标放在 JavaScript 上时,我需要重新定位方块。我怎么做?

为啥过渡框阴影会导致整页重绘?

为啥我的视图在 swiftUI 中首次出现在屏幕上时没有转换

为啥 UIPickerView 是半透明的