mysql - 当天开始时出现初始数据库连接错误

标签 mysql debian database-connection asterisk

上下文:电话系统 (Asterisk) 使用 MySQL C API 连接到数据库,以在调用进入时查找路由。查找涉及连接到数据库、执行查询,然后关闭连接。

有时早上的第一个调用会生成以下错误:

Access denied for user 'asterisk'@'127.0.0.1' (using password: YES)

通常这意味着密码错误,但显然情况并非如此,因为它对所有调用始终使用相同的用户和密码。就好像系统以某种方式“进入休眠状态”,或者文件句柄可能在某处变得陈旧,因此第一次尝试连接到数据库失败,但其余部分工作正常。而且它只是偶尔发生,所以我无法复制它 - 非常奇怪!

我在 Debian 8.7 上使用 Asterisk 1.8.32 和 MySQL 5.5。

这有点令人头疼,所以我将不胜感激任何建议!

最佳答案

首先,由于安全功能的原因,目前使用 1.8.* 树是非常糟糕的主意。

移至 11.* 修复此问题。

您也可以在 my.cnf 中执行以下操作

 interactive_timeout=

设置为超过 4 天(周末)的任何值

其他选项是每 3 小时通过 crontab 重新加载 mysql 模块。

最佳选择(升级除外)是从 mysql 迁移到 res_odbc,它具有 keepalive 选项。 res_config_mysql 考虑已弃用,因此任何新系统都应使用 ODBC。

关于mysql - 当天开始时出现初始数据库连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51156735/

相关文章:

linux 内核参数 'rootwait' 被忽略

java - 什么是关于数据库和 JNDI 的 validationQuery?

mysql - 使用 Inner Join 在 SELECT 中设置别名

php - mysql查询检索丢失一行

PHP:检查数据库中的项目是否具有相同的名称

mysql - MySQL InnoDB 表的恒定锁等待超时

ruby-on-rails - 安装 rails 时出错,无法构建 gem native 扩展

c++ - 为 C++ 源文件构建 debian 包时出错

java - 错误-java.lang.ClassNotFoundException : oracle. jdbc.driver.OracleDriver

c# - 通过打开数据库连接测试网络连接