我的应用程序中的 MariaDB 出现了一个奇怪的问题。
我用Prisma NodeJS 库连接到 MariaDB。
问题如下:
我有本地主机和具有相同用户名/密码/数据库组合的远程服务器(为了方便我而不需要更改配置)
- 我有一个包含用户、密码、主机和数据库的 URL 字符串
- 当我将主机更改为远程服务器时,它仍然读取本地主机数据库
- 如果我在本地(我的 CLI)更改密码,它会读取远程服务器
- 如果我在服务器上更改密码并更新 URL 字符串,情况也是如此
MariaDB 是否有可能将用户/密码/数据库保存在某种缓存中,并根据该缓存获取主机?
我使用 Fedora GNU/Linux 37 和 MariaDB 10.5.18
这是 MariaDB 中的一个错误吗?我应该在某处报告它吗?
我已在 Prisma 上询问过此问题GitHub 上的讨论页面
编辑: 这些是我的 URL 字符串:
DATABASE_URL="mysql://10669_koduj_quiz:<PASSWD>@localhost:3306/10669_koduj_quiz"
DATABASE_URL="mysql://10669_koduj_quiz:<PASSWD>@jcubic.atthost24.pl:3306/10669_koduj_quiz"
笔记:从我的实验中可以明显看出 URL 已被缓存,但我不确定谁对此负责。MariaDB、Prisma 包、用于连接 MySQL 的 NPM 库,或者我的系统上可能有一些由 NodeJS 库使用的共享库。
答案1
MariaDB 不缓存主机连接。但是,已经打开连接如果主机(或用户或密码)信息发生变化但连接未终止,则保持打开状态并正常工作。这意味着如果您有一个打开的连接,并且在不终止该连接的情况下更改了主机/用户/密码,则该连接将保持活动状态,您可以使用它来查询/更新数据库。
换句话说,在建立连接时检查主机/用户/密码信息,不是在查询过程中。
因此,所使用的框架/库可能不会关闭您的连接(即:实现某种形式的连接池和/或其他优化)。