我的知识记录

网站提示Database Error_数据库错误提示排查

网站错误提示是用户和站长经常看到的,404/500/502/503/504/403/401、连接拒绝/超时、DNS解析失败、连接重置、SSL错误、数据库错误、PHP致命错误/语法错误/内存耗尽/超时/上传限制等各种错误提示让人困惑。本文系统讲解网站常见错误提示的含义、原因和解决方法,涵盖HTTP状态码(4xx/5xx)、网络错误(连接拒绝/超时/DNS/重置)、SSL/HTTPS错误、数据库错误、PHP错误(Fatal/Parse/Memory/Timeout/Upload),帮助站长快速理解错误提示并解决问题。

数据库错误提示排查。Error establishing a database connection(数据库连接失败)——WordPress等程序提示。原因:a.数据库服务没启动(MySQL/MariaDB没运行,service mysql status启动,启动失败看MySQL错误日志);b.配置信息错(wp-config.php/config.php中数据库名/用户名/密码/地址错,搬服务器后没改,核对配置);c.数据库不存在(配置的库名没创建,创建数据库+导入数据);d.用户权限不足(数据库用户没有该库权限,GRANT ALL ON 库.* TO '用户'@'localhost';);e.连接数满(max_connections满,SHOW PROCESSLIST看,杀无用连接/调大max_connections);f.数据库崩溃/损坏(表损坏/数据文件损坏,修复表/恢复备份,见MySQL启动失败);g.远程数据库连接(数据库在远程服务器,远程数据库IP白名单没加当前服务器IP/3306端口没开放,添加白名单/开放端口)。解决:先测试命令行连接(mysql -u用户 -p密码 -h地址 库名),能连接是程序配置问题,不能连接看数据库服务/权限/网络。Access denied for user 'user'@'host'(数据库访问被拒)——用户名/密码/权限错。原因:a.密码错(数据库用户密码不对,重置密码SET PASSWORD FOR 'user'@'localhost'=PASSWORD('新密码'););b.用户不存在(用户没创建,CREATE USER 'user'@'localhost' IDENTIFIED BY '密码'; GRANT...);c.主机不匹配(用户只能从localhost连接,但从远程IP连接,创建'user'@'%'或指定IP的用户);d.权限不足(用户没有该库/表权限,GRANT授权);e.密码含特殊字符没转义(配置文件中密码含#/!等特殊字符没加引号,加引号或改密码)。解决:确认用户存在+密码对+主机匹配+权限足够,用mysql命令行测试。Too many connections(连接数满)——MySQL连接数达到max_connections上限,新连接被拒。原因:a.并发高(网站访问量大,连接数不够);b.连接泄漏(程序没关闭连接,长连接堆积,检查代码用mysql_close/pdo=null);c.慢查询占连接(慢查询长时间占用连接,优化慢SQL/加索引);d.攻击(扫描/CC大量数据库连接,WAF防护)。解决:临时——SHOW PROCESSLIST看连接,KILL无用连接(KILL ID);永久——调大max_connections(my.cnf max_connections=200-500,根据内存)、优化慢查询(加索引/改SQL)、程序用连接池/短连接、WAF防攻击、升级服务器配置。Database Error/数据库错误(通用提示)——程序显示数据库错误但没具体信息。解决:a.开数据库错误显示(程序配置中开调试模式,或代码中echo mysql_error()/$pdo->errorInfo());b.看数据库错误日志(MySQL error.log);c.看程序错误日志(PHP错误日志);d.测试数据库连接(命令行mysql测试);e.检查最近修改(改了数据库配置/表结构?回滚测试)。Unknown database 'dbname'(未知数据库)——数据库名错/不存在。解决:SHOW DATABASES看有哪些库,创建数据库(CREATE DATABASE 库名 CHARACTER SET utf8mb4;)或修正配置中的库名。Table 'db.table' doesn't exist(表不存在)——表名错/被删/没导入。解决:SHOW TABLES看表,导入表结构数据(从备份恢复),修正表名(大小写,Linux区分大小写)。Unknown column 'col' in 'field list'(字段不存在)——字段名错/被删/没加。解决:DESCRIBE 表看字段,加字段(ALTER TABLE 表 ADD COLUMN 字段 类型),修正字段名。Duplicate entry 'x' for key 'y'(主键/唯一索引重复)——插入重复数据。解决:检查数据,用INSERT IGNORE或ON DUPLICATE KEY UPDATE,或删除重复数据。Can't connect to MySQL server on 'host'(无法连接MySQL服务器)——网络/服务问题。解决:检查MySQL服务运行、3306端口开放(netstat/防火墙)、远程连接授权(bind-address=0.0.0.0、用户host允许)、网络连通(ping/telnet host 3306)。数据库错误排查核心:先命令行测试连接(区分程序还是数据库问题)→看错误信息(具体原因)→检查服务/配置/权限/网络→修复。

站长反馈:「网站500错误,开了display_errors看到是PHP语法错误(漏了分号),修复就好,500大部分是PHP错误,开错误显示或看日志就能定位」「404错误查了是伪静态没配置,Nginx加了rewrite规则就好了,404先测动态URL,动态正常就是伪静态问题」。

操作提示:网站错误提示排查流程——1.看错误提示文字(浏览器显示的错误信息,如404/500/数据库连接失败/内存耗尽,直接指出问题类型);2.F12→Network看HTTP状态码(4xx客户端/5xx服务器,看具体请求URL和状态);3.看服务器日志(Nginx/Apache error.log、PHP错误日志、MySQL error.log、系统日志,日志记录最详细的错误原因+文件+行号);4.测试配置/连接(nginx -t测Web配置,mysql命令行测数据库连接,php -m测PHP扩展);5.检查最近修改(最近改了什么?配置/代码/插件?回滚测试,最近修改的最可能出错);6.从简单到复杂排查(先URL/权限/配置/服务,再代码/数据库/系统)。常见错误速查:404=URL错/文件被删/伪静态未配置(测动态URL,动态正常是伪静态);403=权限不足(644/755)/IP被封/目录索引禁止/防盗链;500=PHP语法错/内存耗尽/.htaccess错/权限777/扩展缺失(开display_errors看日志);502=PHP-FPM没启/进程不够/fastcgi配置错/超时(看Nginx日志+PHP-FPM状态);503=服务器过载/维护模式/后端不可用/WAF;504=PHP脚本慢/数据库慢查询/外部API超时/fastcgi_read_timeout太短;Connection refused=服务没启/端口没开/解析错;timed out=服务器过载/网络/防火墙;DNS失败=域名没解析/过期/被墙;连接重置=服务崩溃/WAF/SSL配置错;证书错误=过期/域名不匹配/不受信任/协议不兼容;PHP Fatal=致命错误(看文件行号修复);Parse=语法错(漏分号/引号/括号);Warning=header already sent(BOM/输出)/未定义变量;memory_limit=内存耗尽(优化代码/调大);max_execution_time=超时(优化/调大/异步);上传失败=upload_max_filesize/post_max_size/client_max_body_size太小;数据库连接失败=服务没启/配置错/权限/连接数(命令行测试连接);Access denied=用户/密码/主机/权限错;Too many connections=连接数满/慢查询/攻击(杀连接/调大/优化/防攻击)。

网站提示Database Error_数据库错误提示排查

标签:

更新时间:2026-08-27 00:22:05

上一篇:网站K8s Service端口未暴露连接拒绝修复教程

下一篇:修改Word文件创建时间修改日期实测有效|合同文档归档下Word 2013文档时间属性调整