Как делают деплои базы данных? Именно базы данных, а не миграций?
Разрабатываю на laravel сайты. Миграциями не пользуюсь - мне не удобно, а работаю в одиночку, так что проблем не возникает. Хотя они все равно не относятся к проблеме. Дело в том, что я по одному клику деплою все измененные файлы на сервер - это круто. Но вот если я что-то добавил в базу (не обязательно таблицы, инфу в том числе), мне приходится делать экспорт своей базы, заходить в phpmyadmin на сервере клиента, и туда вставлять. Очень надоело. Нет ли способа это тоже автоматизировать?
Сергей, если я пойму как деплоить непосредственно не только структуру бд, а и все данные в таблицах, которые вношу я через сайт на локалке (например, добавляю новые товары), то само собой я начну использовать миграции. Другое дело, я не могу этого понять...
suhuxa1, выражу своё мнение:
Синхронизация данных на локалке и проде не нужна. Это какая-то ваша прихоть. На локалке ведётся разработка. Данные могут быть тестовыми, фейковыми. Реальное наполнение делается сразу на проде. Для сохранности на проде настраиваются бэкапы.
Это автоматизируется миграциями как раз -- то есть изменение БД вы отдаете все тому же контролю версий ГИТ.
При деплое можно сделать так, что подтянется ветка (вместе с параметрами для БД!) и применятся миграции... А иначе откуда любой утилите деплоя узнать, что править в БД?! Вот вы в файле мигарции и пишите что именно поменять...
Если вам не нравится синтаксис описания, то почти везде в миграции как правило можно описывать голые SQL... главное -- записать изменение БД в файл, чтобы было что разворачивать
А разве миграции не только для добавления\удаления таблиц в базу? Я читал, что вроде так люди и добавляют, но мне легче всегда было открыть phpmyadmin и вручную создать нужные таблицы, это нагляднее.
А как и куда сохраняются данные, которые есть в БД? Вот, например, я сделал функцию загрузки фотографии, добавил несколько штук с описанием. Информация сразу попала в базу данных. Теперь я переношу на сервер - изображения перенеслись, т.к. в папке, а информация из БД - нет. А как эту информацию сохранить в миграции? Или как это делается? Я слышал, что через миграции можно только dummy-data добавить, мол для теста...
suhuxa1, да .в миграциях ТОЛЬКО структура, тк если данные добавлять -- могут поломаться, тк данные грузятся в определенные поля, которых может не стать...
А как и куда сохраняются данные, которые есть в БД?
Для этого используют фикстуры, так называются данные в Yii2 и Symfony, в Ларе они называются как-то по-другому точно, но не помню как
Boris Korobkov, а можно версию для тупых? Я в упор не понимаю, куда мне писать insert into и что собственно вставлять, если речь идет о миграциях? Давайте на примере разберем, я в прошлом проекте использовал миграции, писал какие должны быть таблицы и какие поля в них. Миграции деплоились на сервер, там я их инициализировал через artisan. Но! Инфа содержащаяся в БД на локалке естественно не перекидывалась. Куда, что и как надо было написать, чтобы информация из бд тоже задеплоилась?
Boris Korobkov, да, я прочитал, но про данные опять же ничего не увидел( Только работа со структурой. Знаю что можно добавлять демо данные, но речь идет именно о тех данных, которые добавляются не через код, а, например, юзер на сайте добивил новый товар и коммент оставил.
например, юзер на сайте добивил новый товар и коммент оставил
А зачем вам пользовательские данные на других серверах (например, разработческом)?
Данные добавлять в миграции надо крайне редко. Например, если способы оплаты перечислены в отдельной таблице и для каждого из них отдельная бизнес-логика оплаты. При добавлении новой бизнес-логики оплаты надо сделать миграцию с добавление новой записи в эту таблицу.
если мои сообщения вам не интересны, так и напишите, и гляньте видео выше -- да др фрейм, но идею за полминуты поймете, как раз чел наполняет интернет-магазин одной консольной командой