drupal - 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
有人遇到同样的问题并找到了解决方案吗?
解决方案
自从我皈依以来已经有一段时间了。我有类似的问题,并采用了最少配置的方法。
首先,比较以下命令的结果,看看它是否暴露了任何问题:
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 配置中。