【问题标题】:drush can't find Drupal site after migrating to PostgreSQL迁移到 PostgreSQL 后,drush 找不到 Drupal 站点
【发布时间】:2016-08-22 23:28:59
【问题描述】:

在我的 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

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

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

命令PGPASSFILE不可用

有什么想法吗?

【问题讨论】:

  • 您是否有可能仍定义 MySQL 连接信息的 drushrc 或 drush 别名文件?
  • 不,没有类似的东西,但如果我这样做 >drush sql-cli 我收到消息,命令“PGPASSFILE”不可用

标签: windows postgresql drupal drush


【解决方案1】:

根据@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";
     }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多