![MySQL 服务器已消失:两个 API,单个数据库,一个 API 抛出错误,而其他 API 则不会](https://linux22.com/image/750485/MySQL%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%B7%B2%E6%B6%88%E5%A4%B1%EF%BC%9A%E4%B8%A4%E4%B8%AA%20API%EF%BC%8C%E5%8D%95%E4%B8%AA%E6%95%B0%E6%8D%AE%E5%BA%93%EF%BC%8C%E4%B8%80%E4%B8%AA%20API%20%E6%8A%9B%E5%87%BA%E9%94%99%E8%AF%AF%EF%BC%8C%E8%80%8C%E5%85%B6%E4%BB%96%20API%20%E5%88%99%E4%B8%8D%E4%BC%9A.png)
我有两个 flask restful API。两个都运行良好。API1 仅用于读取数据库,API2 处理更新/插入。两个都访问同一个数据库。
问题:
API1 每天早上都会停止工作,我每次都必须重新启动它(早上一次)。错误是 - MySQL 服务器消失了。API2
始终正常工作,不会出现任何错误。
之前,我认为 wait_timeout(默认 8 小时)可能是 API1 抛出该错误的原因。但是,为什么 API2 可以工作呢?(我使用一个类进行数据库操作,并且在其 init 方法中有一个连接字符串。另外,我没有关闭任何数据库连接。我很快就会进行编辑以纠正它,只是在这里提供信息以了解该错误的确切原因)
问题 - 为什么只有 API1 会出现该错误,而 API2 却从来不会出现?
附言- 我在 stackoverflow 上问了这个问题,但被建议在这里发布,因为我从来没有找到一个答案重新发布在这里
MySQL 配置文件:
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
bind-address = 127.0.0.1
key_buffer_size = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover-options = BACKUP
#max_connections = 100
#table_cache = 64
#thread_concurrency = 10
query_cache_limit = 1M
query_cache_size = 16M
错误日志
2020-04-02T10:30:13.606051Z 15 [Note] Aborted connection 15 to db: 'databasename' user: 'root' host: 'localhost' (Got an error reading communication packets)
数据库类是这样的:
import MySQLdb
class Db:
parameters = ("localhost", "root", "password", "databasename")
def __init__(self):
conn = MySQLdb.connect(*self.parameters)
self.cur = conn.cursor()