首页 > 解决方案 > Drush 9 sql:同步错误:找不到源@local的数据库记录

问题描述

我刚刚安装了一个新的 Drupal 8,它随 Drush 9 一起提供,我试图设置一切以使用命令 sql:sync 或 config:pull 来同步我的本地和暂存,但每次我运行命令 'drush sql:同步 @local @stage' 我收到以下错误

在 SqlSyncCommands.php 第 86 行:

[异常] 错误:找不到源 @local 的数据库记录

这是我的 self.site.yml

local:
  host: localhost
  user: root
  root: /var/www/html/new-drupal
  uri: http://new-drupal.local

stage:
  host: XX.XX.XX.XX
  user: root
  root: /var/www/html/new-drupal
  uri: http://new-drupal.my-staging.com

环顾四周,我发现了包含此选项的旧版本的别名文件:

'databases' =>
     array (
       'default' =>
       array (
         'default' =>
         array (
           'driver' => 'mysql',
           'username' => 'sqlusername',
           'password' => 'sqlpassword',
           'port' => '',
           'host' => 'localhost',
           'database' => 'sqldbname',
         ),
      ),
    ),

但是检查 9 版本的示例文件没有任何内容:https ://github.com/drush-ops/drush/blob/master/examples/example.site.yml

有人遇到同样的问题并找到了解决方案吗?

标签: drupaldrupal-8drush

解决方案


自从我皈依以来已经有一段时间了。我有类似的问题,并采用了最少配置的方法。

首先,比较以下命令的结果,看看它是否暴露了任何问题:

drush site:alias 
drush site:alias @self
drush site:alias @local

我没有 self.site.yml 文件。我已经命名了我的 drush/sites/remote.site.yml 并且其中只有远程别名。我没有定义 @local 别名,而是使用内置的 @self 别名。

在 drush/drush.yml 我有:

drush:
  paths:
    config:
      - ../docroot/sites/default/local.drush.yml

在 docroot/sites/default/local.drush.yml 我只有

options:
  uri: 'http://localhost:port'

使用此配置, drush site:alias @self 的结果是

'@self':
  root: /var/www/docroot
  uri: 'http://localhost:port'

假设我在 drush/sites/remote.site.yml 中有一个有效的 @stage 别名,我会运行

drush sql:sync @self @stage

如果你想要一个 @local 别名,也许你应该把它移到本地 drush 配置中。


推荐阅读