Drush 9 sql:sync错误:找不到源@local的数据库记录

时间:2019-03-06 22:37:38

标签: drupal drupal-8 drush

我刚刚安装了一个新的Drupal 8,它随Drush 9一起提供,我试图设置所有内容以使用命令sql:sync或config:pull来同步本地和暂存,但是每次我运行命令' drush sql:sync @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

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

1 个答案:

答案 0 :(得分:0)

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

首先,比较以下命令的结果以查看是否存在任何问题:

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

我没有self.site.yml文件。我已将其命名为mine 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配置。