`

解决使用MySQL C-API开发应用时的连接超时问题

 
阅读更多

大概初用C-API进行MySQL应用开发的人,都会遇到这种问题,就是当应用停顿了一段时间以后,连接会自动中断掉。

仔细试验,会发现这主要与参数interactive_timeout有关,它缺省值28800, 合计,好像是8个小时

其实,我们在应用里边,可以在获取连接以后,加大这个值,使应用不会自动中断的连接。

mysql> show variables like '%time%';
+--------------------------+-------------------+
| Variable_name | Value |
+--------------------------+-------------------+
| connect_timeout | 5 |
| datetime_format | %Y-%m-%d %H:%i:%s |
| delayed_insert_timeout | 300 |
| flush_time | 1800 |
| innodb_lock_wait_timeout | 50 |
| interactive_timeout | 28800 |
| long_query_time | 10 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| slow_launch_time | 2 |
| sync_replication_timeout | 10 |
| system_time_zone | |
| time_format | %H:%i:%s |
| time_zone | SYSTEM |
| timed_mutexes | OFF |
| wait_timeout | 28800 |
+--------------------------+-------------------+

mysql> set interactive_timeout=1073741824;
Query OK, 0 rows affected (0.06 sec)

mysql> show variables like 'intera%timeout';
+---------------------+----------+
| Variable_name | Value |
+---------------------+----------+
| interactive_timeout | 31536000 |
+---------------------+----------+
1 row in set (0.02 sec)

mysql> show variables like '%timeout%';
+--------------------------+----------+
| Variable_name | Value |
+--------------------------+----------+
| connect_timeout | 5 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| interactive_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| sync_replication_timeout | 10 |
| wait_timeout | 28800 |
+--------------------------+----------+
9 rows in set (0.00 sec)

如果不放心,可以将wait_timeout也改大。

至于在C应用里怎么执行,直接执行SQL语句:

set interactive_timeout=1073741824

即可。

其实,要想永不中断,比较理想的方法,是自己实现一个连接池,每隔一个周期(比如10分钟),主动查询一次数据库,这样,这个连接永远是活动的。

分享到:
评论

相关推荐

    MySQL_C_API.rar_API_mysql_doc_mysql api_mysql c语言

    MySQL的C API是数据库开发中一个重要的组成部分,它允许程序员使用C语言来与MySQL服务器进行交互,执行SQL查询,管理数据库等操作。本资源“MySQL_C_API.rar_API_mysql_doc_mysql api_mysql c语言”包含了关于MySQL ...

    mysql api connector

    MySQL API Connector是C语言开发的一款库,用于创建和管理到MySQL数据库的连接池。这个库提供了高效的连接管理和数据操作功能,使得在C程序中与MySQL数据库进行交互变得更加便捷和高效。下面将详细介绍MySQL API ...

    MYSQL C API封装

    MySQL C API封装是针对MySQL数据库系统使用C语言编程时的一种接口包装技术。它允许开发者以更简洁、方便的方式来实现对MySQL数据库的各种操作,包括连接、查询、事务处理等。在这个项目中,我们有两个核心的封装类:...

    Mysql C/C++API

    MySQL的C/C++ API是开发人员使用C或C++语言与MySQL数据库进行交互的一种接口。这个API提供了丰富的函数和结构,使得程序员能够执行SQL查询、处理结果集、管理数据库连接等操作。以下是对Mysql C/C++ API的详细说明:...

    MYSQL_C_API.rar_MYSQL_mysql c++

    这个“MYSQL_C_API.rar_MYSQL_mysql c++”压缩包文件包含了一个详细注释版的MySQL C API文档,名为“MYSQL_C_API详解.doc”,对于开发者来说,是一个非常实用的参考资料。 MySQL C API允许程序员通过编写C或C++代码...

    mysql C++连接池

    在C++中,通常会使用MySQL的C API或者第三方库如MySQL Connector/C++来实现这些功能。例如,MySQL Connector/C++提供了`sql::mysql::MySQL_Driver`和`sql::Connection`接口,用于创建和管理数据库连接。 使用连接池...

    C语言数据库连接池 libzdb-3.0

    - **连接超时设置**:设置合适的连接超时时间,防止长时间未使用的连接占用资源。 - **定期检查和回收**:定期检查连接池中的连接状态,及时回收无效或过期的连接。 - **事务管理**:合理使用事务,减少数据库操作...

    Mysql-jdbc驱动包

    MySQL-JDBC驱动包是Java应用程序连接到MySQL数据库的关键组件,它是Java Database Connectivity (JDBC) API的一部分,允许Java开发者在Java程序中执行SQL语句,从而实现对MySQL数据库的读写操作。MySQL-Connector/J...

    mysql 连接数据库ODBC

    对于大型企业级应用,可能需要考虑使用更高效的数据库连接方式,如JDBC或直接使用MySQL的C API。 总的来说,MySQL通过ODBC连接提供了灵活的数据访问方式,使得不同平台和语言的应用程序都能方便地与MySQL数据库进行...

    Ruby-mysql2一个现代的简单和非常快速的RubyMysql库

    1. **高效性**:mysql2库使用C语言编写,直接与MySQL C API对接,减少了中间的解释成本,提高了数据读取和写入的速度。 2. **简单易用的API**:它提供了一个简洁的Ruby接口,使得执行SQL查询、处理结果集以及管理...

    MySQL++使用手册

    - **目的**:解决由于嵌入式 MySQL C API 导致的编译问题。 - **代码**:例如,排除不必要的头文件。 **8.4 在缺少完整 C99 支持的系统上构建 MySQL++** - **目的**:提供在没有完整 C99 支持的系统上构建 MySQL++ ...

    MySql_C 接口集合

    ### MySQL C 接口集合详解 #### 1....这些函数构成了MySQL C API的核心,提供了从连接管理、查询执行到结果处理的全方位支持。掌握它们的使用方法,对于开发高效、稳定的数据库应用程序至关重要。

    mysql api 技术文档

    MySQL API 是一组编程接口,允许开发人员在各种编程语言中与MySQL数据库进行交互。这篇技术文档详细阐述了如何使用MySQL API来实现数据的查询、插入、更新和删除等操作,是提升MySQL技能的重要资源。 首先,MySQL ...

    基于C++的MySQL数据库连接池源代码

    在C++中实现MySQL数据库连接池,通常会使用MySQL的C API,这是一个提供与MySQL服务器通信的C语言接口。首先,我们需要包含必要的头文件,如`mysql.h`,并确保已经正确安装了MySQL的开发库。接下来,我们可以设计一个...

    C Sharp 连接MySQL数据库示例

    在实际项目中,还需要处理异常、连接超时、事务管理和安全性等问题。比如,使用参数化查询防止SQL注入,定期检查和刷新连接,以及在适当的时候启用SSL连接以保护数据传输的安全。 总之,C#连接MySQL数据库涉及的...

    MySQL Objective C API for Cocoa-开源

    5. **错误处理**:当发生错误时,API 会提供详细的错误信息,帮助开发者调试和解决问题。 6. **线程安全**:考虑到多线程环境,API设计时考虑了线程安全,确保在并发环境下也能正确运行。 7. **兼容性**:与MySQL...

    java MySQL数据库驱动jar包

    Java MySQL数据库驱动jar包是Java程序连接MySQL数据库的关键组件,它是Java开发人员在进行MySQL数据库操作时必须依赖的库文件。这个驱动包,通常命名为`mysql-connector-java-x.x.x-bin.jar`,其中`x.x.x`代表具体的...

    C++连接mysql数据库

    ### C++连接MySQL数据库知识点详解 #### 一、引言 在软件开发中,数据库连接是必不可少的一个环节。本文将详细介绍如何使用C++语言来连接MySQL...而对于性能要求较高或专为MySQL设计的应用,则推荐使用MySQL API。

    mysql library for BCB

    在实际开发中,你可能会遇到的问题包括连接超时、权限问题、字符编码不匹配等,这些问题都需要根据具体的错误信息和MySQL文档来解决。记得定期更新MySQL库,以确保安全性和兼容性。 总的来说,"mysql library for ...

Global site tag (gtag.js) - Google Analytics