Префиксы в таблицах баз данных Drupal и vBulletin

last modified: 19.01.2009

Первоначально у меня все базы данных для всех приложений лежали в отдельных базах данных и, соответственно, у имен таблиц не было префиксов. Но тут у меня появилась необходимость их слить в одну БД. Для этого необходимо дать именам таблиц префиксы. Но! БД для Drupal ver. 5.x содержит 72 таблицы, а для vBuletin ver 3.6-3.7 - 146 таблиц! Переименовывать эти таблицы вручную через тот же phpMyAdmin мягко говоря утомительно. А мне так надо поступить с 6-ю базами данных... Поэтому я подготовил в формате MS Excel шаблонные файлы для генерации скриптов, которые добавляют к существующим именам таблиц нужные префиксы.

Процедура работы:

  • Для Drupal 5.x:
    1. Закрыть сайт для доступа посетителей на странице http://example.com/admin/settings/site-maintenance
    1. Открыть SQL editor в phpMyAdmin и скопировать туда всю query из колонки E файла шаблона (желаемый префикс задается значением ячеек в колонке D)
    1. Открыть для редактирования файл /sites/[default или имя используемого сайта]/settings.php и заменить строку $db_prefix = ''; на $db_prefix = 'ваш_префикс';
    1. Открыть сайт для доступа посетителей на странице http://example.com/admin/settings/site-maintenance
  • Важно!
    1. Данный набор скриптов подходит только для Drupal ver 5.x. В других версиях может быть другой набор таблиц, который потребует корректировки набора.
    1. В данный набор включены так же таблицы для модуля XML Sitemap. Если он у Вас не используется, то необходимо убрать 5 последних скриптов.
    1. В данный набор включена так же таблица для модуля Google adsense. Если он у Вас не используется, то необходимо убрать 3-ий скрипт.
    1. В Drupal ver. 5.0-5.15 после выполнения таких операций все генераторы кодов (используются для автонумерации страниц, пользователей, комментариев и т.д.) начинают работать с начала! Это вызвано тем, что они хранятся в таблице sequences и там ищется генератор с полным именем таблицы, к которой он используется. Пример: если ранее комментарии нумеровались генератором "comments_cid", то после добавления (или замены) к таблицам префиксов система будет искать генератор под названием "prefix_comments_cid". И так как он отсутствует, то создаст его снова с начальным значением 1. Поэтому после такого "переезда" необходимо открыть таблицу {sequences} и соответсвующим образом переименовать все генераторы там. (Мой bug report на сайте разработчиков.)
  • Для vBulletin 3.6.-3.7.:
    1. Закрыть форум для доступа посетителей на странице http://example.com/forum/admincp/index.php
    1. Открыть SQL editor в phpMyAdmin и скопировать туда всю query из колонки E файла шаблона (желаемый префикс задается значением ячеек в колонке D)
    1. Открыть для редактирования файл /forum/includes/config.php и заменить строку $config['Database']['tableprefix'] = '';
      на $config['Database']['tableprefix'] = 'ваш_префикс';
    1. Открыть форум для доступа посетителей на странице http://example.com/forum/admincp/index.php
  • Важно!
    1. Данный набор скриптов подходит только для Drupal ver 5.x. В других версиях может быть другой набор таблиц, который потребует корректировки набора.

PS.
Как получить полный список таблиц в любой БД для подобной и других операций? Элементарно: необходимо в любом case tool (тот же phpMyadmin, к примеру) выполнить следующий SQL запрос: "show tables". Он вернет полный перечень имен таблиц в данной БД. Затем его можно скопировать в Excel или еще куда. Eye


Отправить новый комментарий

Содержимое этого поля хранится скрыто и не будет показываться публично.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • You can use BBCode tags in the text.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.

Больше информации о возможностях форматирования

CAPTCHA
Этот вопрос задается для проверки того, не является ли обратная сторона программой-роботом (для предотвращения попыток автоматической регистрации).