2016-09-08 3 views
5

Есть ли удобный способ удалить устаревшие столбцы таблицы из базы данных? Мне интересно, есть ли более основанные на соглашения решения, а не входить в PHPMyADMIN и удалять столбцы вручную.Как удалить устаревшие столбцы базы данных в SilverStripe

Пример При установке SilverStripe-Fluent и добавление дополнительного языкового стандарта (например, NZ-NZ) модуль будет разделить каждый SiteTree запись, чтобы добавить дополнительные столбцы перевода с префиксом _nz-NZ. Предположим, мы удалим дополнительную локаль (nz-NZ), столбцы останутся там после/dev/build.

+3

Я не знаю решения для свободного, но вы можете написать задачу для этого. См задачи уже в Fluent: \t [беглой-задача] (https://github.com/tractorcow/silverstripe-fluent/tree/master/code/tasks) Здесь две смежные модули к теме: \t [silverstripe-version-truncator] (https://github.com/axllent/silverstripe-version-truncator) \t [silverstripe-artefactcleaner] (https://github.com/oddnoc/silverstripe-artefactcleaner) – munomono

ответ

1

был отличный модуль DBPlumber для версии 2.4, у которого была эта функция, но я предполагаю, что вы используете более позднюю версию! Было бы здорово, если бы это было обновлено для V3.

Модуль artefact cleaner был бы идеальным. Его описание с страницы github ...

Найти и, при необходимости, удалить заброшенные таблицы и поля в базе данных SilverStripe .

Во время разработки приложения SilverStripe обычно удаляет класс объекта данных или удаляет поле из объекта данных. Этот оставляет устаревшие столбцы и таблицы в вашей базе данных. Поскольку эти столбцы или таблицы могут содержать данные, которые вы все еще хотите, инфраструктура SilverStripe не удаляет их автоматически. Эта задача отображает устаревшие столбцы и таблицы в виде команд SQL DROP и ALTER. Он также предоставляет способ их удаления. Если вы это сделаете, нет отмены, поэтому всегда делайте резервную копию в первую очередь.