Как можно update.php быть отключенным от проверки баз данных Postgres?


Всякий раз, когда я пытаюсь запустить скрипт обновления базы данных update.php после обновления модулей появляется WSOD, и в журнале ошибок php отображается следующее сообщение:

Неустранимая ошибка PHP: класс 'databasetasks_postgresql' не найден в <site root>/includes/install.inc в строке 1338.

Единственная причина, о которой я могу думать, это то, что некоторое время назад я настроил канал для импорта некоторых записей из базы данных Postgres в Drupal, и он, вероятно, настроил Drupal для проверки Postgres. Я не уверен, что это так настоящая причина, как это может быть, в другом.

Есть ли какой-то модуль, который мне нужно переустановить, чтобы сбой исчез?

Это оскорбительные строки в install.inc.

**
 * Ensures the environment for a Drupal database on a predefined connection.
 *
 * This will run tasks that check that Drupal can perform all of the functions
 * on a database, that Drupal needs. Tasks include simple checks like CREATE
 * TABLE to database specific functions like stored procedures and client
 * encoding.
 */
function db_run_tasks($driver) {
  db_installer_object($driver)->runTasks();
  return TRUE;
}

/**
 * Returns a database installer object.
 *
 * @param $driver
 *   The name of the driver.
 */
function db_installer_object($driver) {
  Database::loadDriverFile($driver, array('install.inc'));
  $task_class = 'DatabaseTasks_' . $driver;
  return new $task_class();
}

update.php запускает вызов этого фрагмента кода и вызывает ошибку. Какие-либо идеи кода можно обойти или перенастроить Drupal, чтобы исправить это?

 1
Author: kiamlaluno, 2015-11-13

1 answers

Оказывается, в каталоге Postgres было два каталога includes/database.

includes/database/pgsql/install.inc и includes/database/postgresql/install.inc. Последний был устаревшим и избыточным и, возможно, был установлен как часть требований для некоторых каналов импорта SQL. После его удаления установка теперь работает нормально.

 1
Author: vfclists, 2015-11-13 09:12:02