我使用以下DBD::mysql语句连接到MySQL数据库:
use DBI;
# Connect to the database.
my $dbh = DBI->connect("DBI:mysql:database=test;host=localhost",
"usr", "usr's password",
{'RaiseError' => 1});在尝试连接到数据库之前,是否有一种检查MySQL服务是否正在运行的方法?如果数据库运行在远程服务器上怎么办?
发布于 2022-11-20 04:58:49
如果您想要一个解决方案来检查服务是否正在运行而没有试图连接到它,您可以使用一些Perl包来检查工序表 (只在本地工作),或者检查MySQL端口(默认情况下为3306)有一个进程侦听它。
我不知道这个检查的目的是什么,因为即使服务正在运行,接下来您可能要做的就是打开一个DB连接。打开DB连接是一件快速而容易的事情,如果它不能工作,它就有很好的错误报告。因此,您检查服务是否首先运行的意图只是不必要的开销。
我只是试着像你做的那样连接起来。这是检查服务是否正在运行的最直接方法,它可以在本地和远程运行。
如果有错误,捕获错误并解释错误消息。这将是错误的2002 (对于本地主机)或2003 (对于TCP/IP,无论是同一主机还是远程主机)。
这些错误大多是可靠的。但是可能会出现红斑鱼,例如,如果服务在远程主机上运行,但是由于防火墙或路由问题,客户端主机无法访问它。
如果您得到一个错误1045 (访问被拒绝),至少您知道服务正在运行,并且您可以到达它,问题只是您的用户和密码不正确,或者您试图访问您没有特权使用的架构。
https://stackoverflow.com/questions/74505503
复制相似问题