В процессе перехода с Mariadb на postgres 16 с помощью следующих шагов:
docker exec -ti app php bin/console doctrine:database:create
docker exec -ti app php bin/console make:migration
docker exec -ti app php bin/console doctrine:migrations:migrate
docker run --rm -it --platform linux/amd64 --network app_network -v ./pgloader.load:/pgloader.load dimitri/pgloader:latest \
pgloader pgloader.load
docker exec -ti app php bin/console doctrine:migrations:sync-metadata-storage
pgloader.load:
LOAD DATABASE
FROM mysql://root:root@database/dev
INTO pgsql://app:pass@postgres/dev
WITH include drop, create tables
ALTER SCHEMA 'dev' RENAME TO 'public';
Я попал в застрявшую ситуацию, когда моя миграция json не работает
php bin/console make:migration
генерирует
#[ORM\Column(type: 'json', nullable: true, options: ["jsonb" => true])]
private $emoji;
если я посмотрю файл миграции:
$this->addSql('ALTER TABLE blog ALTER emoji TYPE JSONB');
Если я подключаюсь к БД и смотрю на схему, она имеет текстовый тип
теперь все работает, НО доктрина говорит, что миграция не было выполнено
если я это сделаю
php bin/console doctrine:migrations:migrate
Я понимаю
SQLSTATE[42804]: Datatype mismatch: 7 ERROR: column "emoji" cannot be cast automatically to type jsonb
HINT: You might need to specify "USING emoji::jsonb".
Подробнее здесь: https://stackoverflow.com/questions/787 ... -automatic
Приложение Symfony с доктриной: столбец MariaDB в Postgres = невозможно автоматически привести к типу jsonb ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение