Size: a a a

Laravel для начинающих

2021 March 08

AH

Andrey Helldar in Laravel для начинающих
Если у него драйвер mysql, pgsql или sqlsrv, то да, заведётся: https://github.com/andrey-helldar/migrate-db/blob/main/src/Constants/Drivers.php

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

А

Андрей in Laravel для начинающих
Там постгри и MySQL на выбор
источник

AH

Andrey Helldar in Laravel для начинающих
Андрей
Там постгри и MySQL на выбор
Тогда заведётся.
Чтобы огороды не городить, я завязывался на функционал Лары и использую её билдеры. Поверх них только проверка на соответствие.
источник

А

Андрей in Laravel для начинающих
Надо потестить, а то лень большой дамп совать) а как с продолжением при обрыве? Я внимательно не смотрел ещё
источник

AH

Andrey Helldar in Laravel для начинающих
Андрей
Надо потестить, а то лень большой дамп совать) а как с продолжением при обрыве? Я внимательно не смотрел ещё
С нуля начнёт.
Целевая база очищается при старте, затем разворачиваются миграции и перекидываются данные.

https://github.com/andrey-helldar/migrate-db/blob/main/src/Console/Migrate.php#L65-L70
источник

А

Андрей in Laravel для начинающих
Andrey Helldar
С нуля начнёт.
Целевая база очищается при старте, затем разворачиваются миграции и перекидываются данные.

https://github.com/andrey-helldar/migrate-db/blob/main/src/Console/Migrate.php#L65-L70
Потаблично тоже не?
источник

AH

Andrey Helldar in Laravel для начинающих
Андрей
Потаблично тоже не?
dropAllTables
источник

А

Андрей in Laravel для начинающих
Andrey Helldar
dropAllTables
Плохой ты мальчик) но спасибо за пакет, поюзаю на днях и отпишусь
источник

AH

Andrey Helldar in Laravel для начинающих
Андрей
Потаблично тоже не?
Откуда пакет узнает при повторном запуске где он остановился и не изменились ли данные, раннее перенесённые?
А если процесс остановят, какое-то время будут юзать базу, а потом решат продолжить? Будет нарушение целостности данных.
источник

AH

Andrey Helldar in Laravel для начинающих
Андрей
Плохой ты мальчик) но спасибо за пакет, поюзаю на днях и отпишусь
Нет, это хороший путь - так мы проверяем целостность данных и убеждаемся, что никто свои шаловливые пальчики в неё не засунет)
источник

А

Андрей in Laravel для начинающих
Может тогда допилить чтоб можно было таблицами, а то вдруг большой дамп) тогда и дроп можно только таблицу и заново
источник

А

Андрей in Laravel для начинающих
Данные все равно могут измениться в процессе транзакций, так что целостность - это на совести дампующего)
источник

AH

Andrey Helldar in Laravel для начинающих
Андрей
Данные все равно могут измениться в процессе транзакций, так что целостность - это на совести дампующего)
Могут и в процессе снятия дампа с базы.
В том и суть миграции из одной базы в другую в том, что на исходной нужно запретить все подключения, перенести на новую и там развернуть.
источник

AH

Andrey Helldar in Laravel для начинающих
Андрей
Может тогда допилить чтоб можно было таблицами, а то вдруг большой дамп) тогда и дроп можно только таблицу и заново
Не, не пойдёт. А вот добавить возможность исключения таблиц из обработки, легко. В параметре указываем имена и вуаля - они не будут переноситься. НО если ещё раз запустить скрипт, то dropAllTables, runMigrations...
источник

А

Андрей in Laravel для начинающих
Интересно) как ты себе представляешь запретить подключения в проде)
источник

AH

Andrey Helldar in Laravel для начинающих
Андрей
Интересно) как ты себе представляешь запретить подключения в проде)
Тому, кто этот пакет в прод засунет - руки отрубать по самы пятки и на дыбу вешать ;)
источник

AH

Andrey Helldar in Laravel для начинающих
Андрей
Интересно) как ты себе представляешь запретить подключения в проде)
Как вариант, можно добавить вызов механизма полного лока всей базы, чтобы уж точно наверняка никто в исходную не лез.

Перед стартом пакет отключает проверку foreign связей, а по завершении включает обратно.
источник

А

Андрей in Laravel для начинающих
Т.е. при переезде снимаешь дамп с прода, разворачиваешь локально, запускаешь пакет, а потом переподключаешься к новой на проде? Такое себе
источник

А

Андрей in Laravel для начинающих
Проще уж потаблично, сперва менее горячие таблицы, потом лок, быстренько все горячее и переподключиться! Идея для допиливания пакета тебе) в консоле третим параметром не обязательным имя таблицы
источник

AH

Andrey Helldar in Laravel для начинающих
Андрей
Т.е. при переезде снимаешь дамп с прода, разворачиваешь локально, запускаешь пакет, а потом переподключаешься к новой на проде? Такое себе
Любишь резать по живому?)

В момент низкой нагрузки останавливаешь приложение php artisan down, сообщаешь "ведутся работы". С дев компа ставишь дев зависимости с этим пакетом, настраиваешь старую и новую базы, запускаешь миграции. По окончании, на проде указываешь данные для подключения к новой базе и php artisan up.
Если база большая и нельзя стопарить - этот пакет не панацея.
источник