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