mysql服务未启动或严格模式启用是drupal安装卡住的主因;需检查xampp中mysql运行状态、修正sql_mode为no_engine_substitution、确保数据库参数一致及文件权限正确。

MySQL 服务没启动导致 Drupal 安装卡在数据库配置页
Drupal 安装时提示“无法连接到数据库服务器”,大概率不是密码错了,而是 XAMPP 的 mysql 服务根本没运行。Apache 启动了不代表 MySQL 也起来了——这两个是独立服务。
实操建议:
- 打开 XAMPP 控制面板(
xampp-control.exe),检查MySQL行右侧状态是否为Running;若显示Stopped,点Start并等待状态变绿 - 如果点击后立刻变回
Stopped,打开xampp\mysql\data\mysql_error.log查最后一行错误,常见是端口被占用(如 3306 被其他 MySQL 或 Skype 占用)或数据目录损坏 - 确认 MySQL 启动后,在浏览器访问
http://localhost/phpmyadmin/能正常打开,说明服务已就绪
Drupal 安装时填的数据库参数和 phpMyAdmin 实际设置必须一致
Drupal 安装向导里填的数据库名、用户名、密码,必须和你在 phpMyAdmin 中创建的完全匹配,大小写、下划线、空格都不能错。XAMPP 默认的 root 用户无密码,但很多人安装后手动设过密码,自己却忘了。
实操建议:
- 用 phpMyAdmin 创建新数据库:顶部
New→ 输入数据库名(如drupal9)→ 字符集选utf8mb4_unicode_ci(Drupal 9+ 强制要求) - 创建专用用户:左侧选该库 →
Privileges→Add user account→ 填用户名(如drupal_user)、密码(记牢!),下方勾选Grant all privileges on database - 安装 Drupal 时,“Database name” 填你刚建的
drupal9,“Username” 和 “Password” 填上面新建的账号密码,“Host” 留默认localhost,“Port” 留空(即用 3306)
MySQL 严格模式开启导致 Drupal 安装失败报错 “Field ‘xxx’ doesn’t have a default value”
较新版本 XAMPP(如 8.2+)默认启用 MySQL 严格模式(STRICT_TRANS_TABLES),而 Drupal 的某些表结构定义不显式设默认值,就会触发这个错误,安装中途退出并提示 SQL 执行失败。
实操建议:
- 编辑
xampp\mysql\bin\my.ini,找到[mysqld]段落,在其下添加一行:sql_mode = "NO_ENGINE_SUBSTITUTION" - 保存后重启 MySQL 服务(必须重启才生效)
- 验证是否生效:在 phpMyAdmin 的 SQL 标签页执行
SELECT @@sql_mode;,返回结果里不应再含STRICT_TRANS_TABLES
Drupal 安装完成后首页空白或报错 “The website encountered an unexpected error”
这通常不是数据库配置问题,而是 Drupal 文件权限或 Apache 配置未适配 XAMPP 环境。特别是 Windows 下,Drupal 的 sites/default 目录需要可写,且 .htaccess 必须被 Apache 正确解析。
实操建议:
- 确保
xampp\htdocs\drupal\sites\default目录属性中,当前 Windows 用户有“完全控制”权限(右键 → 属性 → 安全 → 编辑) - 检查
xampp\apache\conf\httpd.conf是否启用了mod_rewrite:确认LoadModule rewrite_module modules/mod_rewrite.so这行前面没有# - 确认 Drupal 根目录下的
.htaccess文件存在且未被重命名(Windows 资源管理器可能隐藏扩展名,误删) - 如果仍报错,临时打开错误显示:编辑
sites/default/settings.php,在末尾加两行:$config['system.logging']['error_level'] = 'verbose';和error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE);
sql_mode 改完不重启 MySQL,或者 phpMyAdmin 里建库时用了中文名/特殊符号,都会让安装流程在最后一步突然中断。










