У меня Drupal работает на MariaDB 5.5.33. Когда я запускаю update.php (после обновления до Drupal 7.28 из Drupal 6) я получаю сообщение об ошибке:
Ошибка: PDOException: SQLSTATE [42S02]: Базовая таблица или представление не найдены: 1146 Таблица 'webdb.location_country' не существует: CREATE TABLE {location_country} (
code
CHAR (2) NOT NULL COMMENT 'Первичный ключ: двухбуквенный код страны ISO ',name
VARCHAR (255) NOT NULL DEFAULT' 'КОММЕНТАРИЙ' Полное имя страны ', ПЕРВИЧНЫЙ КЛЮЧ (code
)) ENGINE = InnoDB SET CHARACTER SET CHEFACTER utf8 COMMENT' Данные страны, управляемые location.module. '; Array () indb_create_table () (строка 2720 из /home/web/public_html/includes/database/database.inc).
Когда я пытаюсь запустить команду
CREATE TABLE {location_country} (
code
CHAR (2) NOT NULL COMMENT 'Первичный ключ: двухбуквенный код страны ISO',name
VARCHAR (255) NOT NULL DEFAULT '' COMMENT 'Полное имя страны', PRIMARY KEY (code
)) ENGINE = InnoDB DEFAULT CHARACTER SET utf8 COMMENT 'Данные страны, управляемые location.module.';
в phpMyAdmin я получаю ошибку
# 1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы узнать правильный синтаксис для использования рядом с '{location_country} (
code
CHAR (2) NOT NULL COMMENT' Первичный ключ: две буквы IS 'в строке 1
Но я не смог выяснить, в чем проблема.
Поскольку ответы других (включая те, которые никоим образом не связаны с движком InnoDB) на вопросы об этой исключительной ситуации PDO помечены как дубликаты и перенаправления на эту, я полагаю, что это каноническое место для ответов на эту проблему.
Я сталкивался с этим несколько раз при удалении модуля, и искомая таблица не существует на сайте (потому что она была удалена случайно, потому что в определении схемы в
.install
или по какой-то другой причине есть опечатка ).Самый простой способ исправить это - запустить скрипт обновления базы данных (
update.php
) вручную.После того, как ваш сайт вернулся к жизни, вы должны попытаться выяснить причину проблемы и устранить ее.
источник
Вам нужно будет удалить фигурные скобки вокруг имени таблицы при использовании в качестве необработанного SQL.
например:
источник
Это то же самое сообщение об ошибке, которое возникло при переносе Drupal 7 с одного сайта разработки на другой сайт разработки на моем ноутбуке. После проверки таблиц в базе данных Drupal я обнаружил, что полный дамп sql не был импортирован (используя Adminer и опцию «С сервера», adminer.sql).
Найдите таблицы базы данных Drupal 7, которые располагаются ближе к концу дампа SQL в алфавитном порядке, например: user * , views * , webform * , workbench * , xmlsitemap *, чтобы увидеть, все ли они импортированы.
Я использовал
drush sql-cli < database.sql
для импорта дамп sql в базу данных Drupal после удаления всех таблиц базы данных сdrush sql-drop
.источник