Как можно 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 answers
Оказывается, в каталоге Postgres было два каталога includes/database
.
includes/database/pgsql/install.inc
и includes/database/postgresql/install.inc
. Последний был устаревшим и избыточным и, возможно, был установлен как часть требований для некоторых каналов импорта SQL. После его удаления установка теперь работает нормально.