Изменить структуру таблицы

Shasoft

Новичок
Изменить структуру таблицы

Есть таблица в БД.
Есть описание в формате SQL этой же таблицы.
Нужно модифицировать таблицу в соответствии с новым описанием.

Зачем это нужно: для автоматического изменеия структуры таблиц движка. В старой версии я просто переименовывал старую таблицу, потом создавал новую с новой структурой, копировал данные из старой в новую таблицу, удалял старую таблицу. Всё замечательно работало.

В новой редакции количество данных может быть достаточно большим. Поэтому не хочется гонять данные туда-сюда.

Может есть какие-то готовые решения для таких обновлений?

Подразумевается, что новая структура содержит ВСЕ поля старой структуры + дополнительные поля. Т.е. могут быть следующие изменения структуры:
1. Добавление новых полей
2. Изменение типа старых полей
3. Добавление новых индексов
4. Изменений существующих индексов
 

Shasoft

Новичок
Понятно, что делать это надо через ALTER TABLE.
Но хотелось бы, чтобы этот запрос ALTER TABLE строился автоматических по новой и старой структуре.
 

Фанат

oncle terrible
Команда форума
жесть.
и ты хочешь, чтобы за тебя ЭТО написали?
 

Shasoft

Новичок
Хм. Возможно, вы просто не поняли, что я хочу.

Идея такая: обновлять автоматически движок на сайте.

Схема следующая:
Есть локально установленный денвер с движком сайта.
Я локально изменяю/добавляю таблицы, изменяю/добавляю файлы с кодом и ресурсами.
Для обновления я
1. Запускаю скрипт на локальной копии сайта и он создает через "SHOW CREATE TABLE" дамп всех таблиц системы и сохраняет эти данные в определенную папку
2. Потом я запуская скрипт на VBS, который
а) Соединяется по FTP с хостингом и обновляет все файлы из локальной копии.
б) Запускает скрипт на глобальном сайте (на хостинге), который читает сохраненный дамп таблиц и обновляет все таблицы в соответствии с новой структурой.

Вот так это у меня и происходило в старом движке. Но, как я писал, там я заново пересоздавал таблицы и копировал данные.

Ищется функция вида:
getUpdateSql($createTraceOld,$createTraceNew)
$createTraceOld - дамп старой структуры
$createTracenew - дамп новой структуры
Функция возвращает SQL запрос, которые переводит структуры из вида $createTraceOld в $createTraceNew

Задача ясна?
 

Фанат

oncle terrible
Команда форума
Задача ясна! Разрешите приступить к выполнению?
 

Shasoft

Новичок
:)
Неа. Сначало купити у меня лицензию на выполнение задачи.

Более правильно будет
Теперь вопрос понятен?

P.S. А по существу вопроса ответы есть?
 

Фанат

oncle terrible
Команда форума
А в чем существо вопроса? "Дайте мне код"? Нету.
 

Shasoft

Новичок
Прежде чем самому писать, решил спросить у народа. Вроде задача обновления таблиц должна переодически появляться у каждого.
Думал, что может компоненты какие есть уже написанные.
Раз нет, то придется самому делать. :(
 

Фанат

oncle terrible
Команда форума
Поиск - задача никак не связанная с программированием.
Для поиска готовых компонентов на сайте существует
специальный раздел.
Но писать туда уже не надо. Если ты решишь меня неправильно понять

-~{}~ 29.06.09 12:36:

Попробуй посмотреть в вордпрессе.
Там сделали автоматическое обновление движка, возможно, есть и альтер базы.
 

Shasoft

Новичок
Спасибо за наводку. Посмотрю.

Писал сюда, так как я в PHP не настолько специалист и всегда есть вероятность, что нужный мне функционал встроен непосредственно в PHP/MySQL

Тему можно закрывать.
 
Сверху