Хорошие миграции DB для CakePHP?

Я пробовал несколько сценариев миграции за CakePHP, но я столкнулся с проблемами со всем из в некоторой форме или другом.

Совет меня на опции миграции для Пирога, что Вы используете живой и знаете работы.

Я хотел бы следующие "функции":

  • CakePHP 1.2 поддержки (например, миграции CakeDCs только будет опция, когда 1.3 будет стабильно и мое приложение, перемещенное в новую кодовую базу),
  • Поддержка (или по крайней мере не останавливаются на), Модели с другой конфигурацией базы данных.
  • Модели поддержки в подпапках приложения/моделей
  • Модели поддержки в плагинах
  • Таблицы поддержки, которые не соответствуют конвенциям Пирога (у меня есть несколько специальных таблиц, которые не имеют единственного поля первичного ключа и должны сохранить их),
  • Игры хорошо с автоматизированным развертыванием через Capistrano и Git.

Мне не нужны имеющие версию файлы стиля направляющих, мерзавец присвоил версию файлу схемы, который сравнен живой с существующей схемой, сделает. Это: Мне нравится SchemaShell в Пироге кроме него не быть совместимым с большинством моих требований выше.

Я посмотрел на и протестировал:

18
задан Álvaro González 22 August 2012 в 08:31
поделиться

2 ответа

У меня есть плагин, который сделал его для CakePHP 1.2, вы можете увидеть в http://github.com/jrbasso/migrations

Он использует стиль cake для создания всех вещей. Не использует yaml, использует объекты для определения таблиц. Вы можете импортировать модели из Cake без проблем...

2
ответ дан 30 November 2019 в 09:32
поделиться

Я постараюсь обновить эту "тему" своими выводами после быстрого опробования плагина Хуана и всех других упомянутых, кроме плагина от CakeDC... поскольку у меня нет соответствующего приложения, обновленного для CakePHP 1.3, а этот плагин миграции требует 1.3

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

CakePHP Schema Shell

  • Имеет простую концепцию, которая мне нравится. Схема связана с кодом и SCM, используемым для управления его изменениями.

  • Работает отлично до определенного момента. Этот момент заключается в следующем:

  • Не подходит для автоматического развертывания. Т.е. команда update может только изменять таблицы, но не обрабатывать новые или удаленные таблицы. Они обрабатываются собственными командами оболочки, что усложняет развертывание в стиле Cap. Также запуск обновлений с новой таблицей приведет к ошибкам, когда скрипт попытается "Изменить" несуществующую таблицу. Я не уверен, так ли это задумано или это проблема, с которой я столкнулся. (Спросил в группе google, но ответа пока нет)

Миграции CakeDC

  • Похоже, что они взяли Schema Shell и "исправили" ее. В документации объясняется процедура, немного более сложная (по крайней мере, для объяснения), но она может работать так, как я хочу.

YAML, joelmoss и миграции Хуана

  • Все они разделяют концепцию rails о версионности файлов и "подъеме" и "спуске" между ними. Мне это нравится меньше, поскольку я не могу представить ситуацию для своих проектов, когда миграция схемы будет обновлена или откачена без того, чтобы сделать то же самое с исходным кодом. Я также могу жить без возможности переносить существующие данные в сценарии миграции, поскольку я предвижу, что для меня это будет очень редким явлением.

  • Все это предполагает, что я не буду прикасаться к базе данных никакими другими средствами, кроме скриптов миграции. Я не могу открыть свой любимый MySql-GUI и играть вокруг, пока не буду доволен, а затем генерировать "diff" с помощью этих скриптов. (По крайней мере, я не нашел документированных способов сделать это во время моих коротких тестов). Мне приходится вручную записывать изменения в YAML или php-файлы. Поскольку я начинаю работу над существующим проектом, содержащим около 30 таблиц, мне не очень нравится идея переписывать схему вручную. Но некоторые из этих плагинов не создали хорошего начального файла со всеми моими таблицами. Вероятно, это также было связано с моим беглым тестированием и/или невозможностью найти документацию по такой функции. Я не погружался в исходный код большинства из них.

Моим следующим шагом будет обновление проекта до CakePHP 1.3 и проба последнего плагина. Но я не знаю, когда у меня будет на это время. (т.е. никто не задерживает дыхание)

Если вы думаете, что я неправильно понял, как работает любой из этих плагинов, и можете предложить советы, как заставить их работать для меня. Я буду рад ответу в виде комментария.

4
ответ дан 30 November 2019 в 09:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: