当前位置: 首页 > 面试题库 >

与MySql的连接会自动中止。如何正确配置Connector / J?

宋畅
2023-03-14
问题内容

我从错误消息中读取了以下建议:

您应考虑在应用程序中使用连接之前使连接有效性到期和/或对其进行测试,或者增加服务器为客户端超时配置的值,或者使用Connector / J连接属性“
autoReconnect = true”来避免此问题。

我正在使用Spring和JPA。我应该在哪里配置Connector /
J?(处于persistence.xml,或处于entityManagerFactory弹簧配置,或处于dateSource弹簧配置或其他位置?)


问题答案:

文本描述了三种防止连接中止的解决方案:

  1. 使用配置连接字符串autoReconnect=true。这是URL连接字符串的属性,该属性在驱动程序级别起作用。您需要在数据源配置中更改连接字符串。

    url="jdbc:mysql://localhost:3306/confluence?autoReconnect=true"
    
  2. 增加超时。这通常是数据库的属性。您可以增加此值以查看是否获得较少的连接中断。

  3. 配置连接池以测试连接的有效性。这是在池而不是驱动程序级别上完成的。这将取决于您使用的数据源实现。但是,如果使用池化数据池(例如c3p0),则应该在数据源的属性中对其进行配置。

    • JDBC的连接池选项:DBCP与C3P0
    • http://snipplr.com/view/14725/c3p0-datasource-config-connectionpool/
    • http://www.mchange.com/projects/c3p0/index.html#configuring_connection_testing

附加评论:

  • 数据源/池也可以有一个超时,它对应于空闲连接在池中保留的时间。不要与db超时混淆。
  • 有几种方法可以测试连接的有效性。一种常见的方法是拥有虚拟测试表。池将在虚拟测试表上发出选择,以查看连接是否仍然正常。


 类似资料:
  • 我试图在Mifare Ultralight C上启动3DES协议。在产品数据表中,他们指定您必须首先发送命令(我发现这篇文章,每个询问的人都被重定向到:Android:使用恩智浦MiFare Ultralight C进行身份验证)。 所以我尝试在下面的代码中做类似的事情: 但我在收发器操作时总是会出现以下错误: w/system . err:Android . NFC . taglostexcep

  • 问题内容: 我不时看到有关连接数据库的问题。 大多数答案不是我做的方式,否则我可能只是无法正确获得答案。无论如何; 我从未考虑过,因为我的工作方式对我有效。 但是这里有个疯狂的想法;也许我做错了所有,如果是这样的话;我真的很想知道如何使用PHP和PDO正确连接到MySQL数据库并使其易于访问。 这是我的做法: 首先,这是我的文件结构 (向下精简) : index.php 在最顶部,我有。 load

  • 问题内容: 我有一个Spring应用程序,我相信它使用DBCP连接池来连接到MySql数据库。我说要相信,因为这不是我擅长的领域,如果一切设置正确,我也不会积极。我运行该应用程序没有问题,并且一切正常。该问题在一夜之间发生。该应用程序使用率不高,一夜之间显然失去了与MySql的连接。我调查了一下,发现MySql有一个8小时的窗口,然后它断开连接或其他任何操作。我对此很好,但是当用户早上尝试登录时,

  • 当我需要GTM+1时区时,如何配置到mysql数据库的spring连接?我已经保存了UTC和实体,例如,使用6PM而不是7PM。这对我来说是一个很大的问题,我没有找到任何实际的GTM+1解决方案。我在application.properties中的连接是:spring.datasource.url=jdbc:mysql:/localhost/inzynierka?useUnicode=true&u

  • 代码如下: 我从文件中了解到: 如果您使用的是@SpringBootTest注释,则TestRestTemplate是自动可用的,并且可以@AutoWired到您的测试中。 问题是我确实使用了SpringBootTest注释,但当我运行测试时,TestRestTemplate总是为空。也许我错过了什么。 编辑:我在添加@RunWith(SpringRunner.class)注释时遇到了完全相同的问

  • 问题内容: 我正在用MySQL建立一个网站。我将TOAD用于MySQL,突然出现错误,无法连接数据库: “太多联系” Toad for MySQL中有什么方法可以查看现有连接以杀死它们或简单地将所有连接全部关闭? 问题答案: 不, 没有内置的MySQL命令 。有多种工具和脚本支持它,您可以手动终止某些连接或重新启动服务器(但这会比较慢)。 使用查看所有连接,进程ID是你想杀死。 您可以编辑超时设置