开启WordPress多站点后提示Error establishing a database connection如何解决
WordPress开启多站点后数据库连接错误排查方案
- 核查wp-config.php中的多站点配置顺序
多站点相关配置必须放在/* That's all, stop editing! Happy publishing. */这句话的上方,且配置项要完整,不能只加define( 'WP_ALLOW_MULTISITE', true );就结束,正确的完整基础配置结构如下:
注意所有配置项的引号、逗号不能漏,数据库连接配置(DB_NAME、DB_USER、DB_PASSWORD、DB_HOST四个参数)要放在多站点配置的上方,顺序错误也会触发连接报错。define( 'WP_ALLOW_MULTISITE', true ); define('MULTISITE', true); define('SUBDOMAIN_INSTALL', false); // 子目录模式设为false,子域名模式设为true define('DOMAIN_CURRENT_SITE', '你的站点域名,不带http/https前缀'); define('PATH_CURRENT_SITE', '/'); define('SITE_ID_CURRENT_SITE', 1); define('BLOG_ID_CURRENT_SITE', 1); - 验证数据库用户权限
开启多站点后WordPress会自动创建wp_blogs、wp_site等多张新表,如果你原来的数据库用户只有查询、写入权限,没有建表权限,就会触发连接错误。你可以登录数据库管理面板(比如phpMyAdmin),确认对应的数据库用户拥有当前数据库的全部权限,也可以直接用root权限的数据库用户测试连接是否正常。 - 核查.htaccess规则是否匹配
多站点模式需要重写规则配合,如果你配置完多站点后没有替换根目录的.htaccess内容,也会间接触发数据库连接报错。子目录模式的默认.htaccess规则如下:
替换前记得备份原有的.htaccess文件。RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . index.php [L] - 测试单站点模式是否正常
先注释掉wp-config.php里所有多站点相关的配置,保存后刷新站点,如果还是报数据库连接错误,说明是基础的数据库配置问题,和多站点无关,重新核对DB_NAME、DB_USER、DB_PASSWORD、DB_HOST四个参数是否正确即可;如果单站点模式可以正常访问,说明是多站点配置缺失或者错误导致的问题,回到第一步重新核对配置项即可。
内容的提问来源于stack exchange,提问作者Mustafa Ahmed
相关产品推荐
相关产品推荐

