Синхронизация структур таблиц

Вурдалак

Продвинутый новичок
Синхронизация структур таблиц

Есть ли какая-нибудь программа для сравнения двух структур таблиц и приведения одной ко второй путём генерации необходимого SQL-кода?

-~{}~ 03.10.10 13:32:

Интересует MySQL.
 

AmdY

Пью пиво
Команда форума
в новых версиях phpmyadmin, там только был баг с невозможностью одновременно синхронизировать и структуру, и данные
 

fixxxer

К.О.
Партнер клуба
show create table туда, show create table сюда, diff, генерим alter.

если нету FK, вроде все совсем просто.
 

zerkms

TDD infected
Команда форума
EMS DB Comparer

Но лично из практики предпочитаю при использовании dbForge просто сохранять диффы в файлы и впоследствии их накатывать (превентивный подход)
 

Вурдалак

Продвинутый новичок
Автор оригинала: zerkms
Но лично из практики предпочитаю при использовании dbForge просто сохранять диффы в файлы и впоследствии их накатывать (превентивный подход)
— подробнее можно?

-~{}~ 03.10.10 22:24:

Groove, только в платной версии эта фича есть, да?

-~{}~ 03.10.10 22:52:

В EMS DB Comparer можно сделать так, чтобы инструкции шли в обратном порядке? У меня добавляются поля
Код:
a
b
c
, а на сервере выходит
Код:
c
b
a
 

zerkms

TDD infected
Команда форума
— подробнее можно?
dbForge при модификации таблиц генерит скрипт diff'а. Т.е. если ты работаешь постоянно в нём - то сила воли и аккуратность позволят тебе всегда иметь набор диффов.
 

zerkms

TDD infected
Команда форума
В системе контроля версий, в виде
yyyy-mm-dd_hhiiss_username.sql

Собираются в отдельные директории под релиз. Во время релиза накатываются.
 

Groove

Новичок
Автор оригинала: Вурдалак
Groove, только в платной версии эта фича есть, да?
наверное, просто когда я пользовался - у меня была "не очень платная" версия :)
 

zerkms

TDD infected
Команда форума
Эм... куда ещё подробнее? :)
в директории .db есть директория diffs, в ней директории
v.0.1
v.0.2

В каждой из них файлы типа:
10-06-05_041500_zerkms.sql

Когда релиз - файлы накатываются на продакшне. Еже...но оно же накатывается на стейдж.
 

zerkms

TDD infected
Команда форума
Эм. Ты вопросы-то задавай конкретнее ))) Что подробнее? Как получить дифф?

Вот так:
1. Добавляем столбик(и)
2. Жмём ctrl+s
3. Открываем "окно вывода" -> "sql журнал". там примерно вот что:

Код:
--------    Сохранение `oauth-php`.oauth_log на сервер    --------

ALTER TABLE `oauth-php`.oauth_log
  ADD COLUMN hello VARCHAR(20) DEFAULT NULL AFTER olg_remote_ip;
--------------- Готово: `oauth-php`.oauth_log -----------------
При удалении так:
Код:
--------    Сохранение `oauth-php`.oauth_log на сервер    --------

ALTER TABLE `oauth-php`.oauth_log
  DROP COLUMN hello;
--------------- Готово: `oauth-php`.oauth_log -----------------
При модификации как делать уже лень, сами представьте )
 

zerkms

TDD infected
Команда форума
Вурдалак
"там" её нигде нет. это директория в моём проекте, где лежит всё, что связано с БД.
 

zerkms

TDD infected
Команда форума
Да :) И, имхо, это тот случай, когда лишний контроль совсем не лишний :)
 
Сверху