You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal 9执行Drush site-install触发AssertionError错误求助

解决Drush site-install的数据库前缀断言错误

错误根源

PHP 8.2对断言逻辑的严格校验升级,加上shell解析参数时的引号处理问题,导致传递给setPrefix()的数据库前缀不是有效字符串,触发断言失败。

分步解决方案

  • 修正数据库前缀参数格式
    移除前缀值的双引号,或改用单引号避免shell解析干扰:

    # 方案1:直接传递无前缀值
    vendor/bin/drush site-install $APP_PROFILE install_configure_form.enable_update_status_emails=NULL --db-prefix=es_ --account-name=$APP_ADMIN_USER --account-pass=$APP_ADMIN_PASSWORD --locale=fr -y --existing-config
    
    # 方案2:用单引号包裹前缀值
    vendor/bin/drush site-install $APP_PROFILE install_configure_form.enable_update_status_emails=NULL --db-prefix='es_' --account-name=$APP_ADMIN_USER --account-pass=$APP_ADMIN_PASSWORD --locale=fr -y --existing-config
    
  • 排查现有配置冲突
    如果使用--existing-config参数,需确认现有配置文件(如settings.php或同步的配置项)中是否已设置数据库前缀。若存在重复设置,移除命令中的--db-prefix参数,依赖配置文件中的设置即可。

  • 临时绕过断言校验(应急方案)
    若上述方法无效,可临时禁用PHP断言执行命令(不推荐长期使用,仅作紧急处理):

    php -d zend.assertions=0 vendor/bin/drush site-install $APP_PROFILE install_configure_form.enable_update_status_emails=NULL --db-prefix="es_" --account-name=$APP_ADMIN_USER --account-pass=$APP_ADMIN_PASSWORD --locale=fr -y --existing-config
    
  • 验证环境变量有效性
    确保$APP_PROFILE、$APP_ADMIN_USER、$APP_ADMIN_PASSWORD等环境变量已正确赋值且非空,空变量会导致命令参数错位,间接引发前缀解析异常。

内容的提问来源于stack exchange,提问作者elitebook190

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:06:12