迁移到PostgreSQL后,drush无法找到Drupal站点

时间:2016-04-28 09:31:26

标签: windows postgresql drupal drush

在我的Drupal项目中从MySQL迁移到Postgres drush输出后:

drush cc all
No Drupal site found, only 'drush' cache was cleared.  

Drupal项目没有问题。从cli连接到pg db也可以。

命令drush sql-connect输出:

  

C:\ Users \ xxx \ AppData \ Local \ Temp \ dru4F48.tmp psql -q --dbname = xxx --host = 127.0.0.1 --port = 5432 --username = postgres --no-align - -field-separator ='' - pset tuples_only = on

系统:赢7 / php5.4.43 / drush 7.3 / postgres 9.3

当我运行drush sql-cli时,会显示以下消息:

  

命令PGPASSFILE不可用

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

根据@Remownz comment,当传递PostgreSQL的密码文件(PGPASSFILE)时,似乎涉及与Windows上的命令行语法相关的Drush错误。检查相关的拉取请求:GitHub上的#880#2973正在尝试修复它。尝试升级到Drush 8.x或更高版本,如果不起作用,请应用上述补丁(拉取请求)。

以下是错误报告的链接:#492 - Drupal 7 on WAMP with PostgreSQL

Drush 8.x的补丁文件内容(用于手动补丁):

--- a/src/Sql/SqlPgsql.php
+++ b/src/Sql/SqlPgsql.php
@@ -41,10 +41,10 @@ private function createPasswordFile()

     public function command()
     {
-        $environment = "";
+        $environment = drush_is_windows() ? "SET " : "";
         $pw_file = $this->createPasswordFile();
         if (isset($pw_file)) {
-            $environment = "PGPASSFILE={$pw_file} ";
+            $environment .= "PGPASSFILE={$pw_file} ";
         }
         return "{$environment}psql -q";
     }