Size: a a a

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

2020 September 08

AH

Andrey Helldar in Laravel для начинающих
Народ, кто в postgres шарит?

Есть база на мускуле со структурой:
CREATE TABLE `booking_service` (
 `id` bigint unsigned NOT NULL,
 `booking_id` bigint unsigned NOT NULL,
 `service_id` bigint unsigned NOT NULL,
 `window_id` bigint unsigned NOT NULL,
 `employer_id` bigint unsigned DEFAULT NULL,
 `price` decimal(10,2) NOT NULL,
 `begin_at` timestamp NULL DEFAULT NULL,
 `end_at` timestamp NULL DEFAULT NULL,
 `created_at` timestamp NULL DEFAULT NULL,
 `updated_at` timestamp NULL DEFAULT NULL,
 `deleted_at` timestamp NULL DEFAULT NULL,
 PRIMARY KEY (`id`),
 KEY `booking_service_booking_id_index` (`booking_id`),
 KEY `booking_service_service_id_index` (`service_id`),
 KEY `booking_service_employer_id_index` (`employer_id`),
 CONSTRAINT `booking_service_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
 CONSTRAINT `booking_service_employer_id_foreign` FOREIGN KEY (`employer_id`) REFERENCES `employers` (`id`) ON UPDATE SET NULL,
 CONSTRAINT `booking_service_service_id_foreign` FOREIGN KEY (`service_id`) REFERENCES `services` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci


Накатываю на неё миграцию:
Schema::table('booking_service', function (Blueprint $table) {
   $table->bigIncrements('id')->change();
});


В мускуле проблем нет, всё работает.

Сейчас перевожу проект на postgres и получаю ошибку:
 SQLSTATE[42P07]: Duplicate table: 7 ERROR:  relation "booking_service_id_seq" already exists (SQL: CREATE SEQUENCE booking_service_id_seq)


Schema::disableForeignKeyConstraints(); не срабатывает.

Куда копать?
источник

a

alexey in Laravel для начинающих
Adel
И передать это в delete наверно
да, можно получить через плак только ключи, а потом Model::destroy($keys_collection)
источник

A

Adel in Laravel для начинающих
Andrey Helldar
Народ, кто в postgres шарит?

Есть база на мускуле со структурой:
CREATE TABLE `booking_service` (
 `id` bigint unsigned NOT NULL,
 `booking_id` bigint unsigned NOT NULL,
 `service_id` bigint unsigned NOT NULL,
 `window_id` bigint unsigned NOT NULL,
 `employer_id` bigint unsigned DEFAULT NULL,
 `price` decimal(10,2) NOT NULL,
 `begin_at` timestamp NULL DEFAULT NULL,
 `end_at` timestamp NULL DEFAULT NULL,
 `created_at` timestamp NULL DEFAULT NULL,
 `updated_at` timestamp NULL DEFAULT NULL,
 `deleted_at` timestamp NULL DEFAULT NULL,
 PRIMARY KEY (`id`),
 KEY `booking_service_booking_id_index` (`booking_id`),
 KEY `booking_service_service_id_index` (`service_id`),
 KEY `booking_service_employer_id_index` (`employer_id`),
 CONSTRAINT `booking_service_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
 CONSTRAINT `booking_service_employer_id_foreign` FOREIGN KEY (`employer_id`) REFERENCES `employers` (`id`) ON UPDATE SET NULL,
 CONSTRAINT `booking_service_service_id_foreign` FOREIGN KEY (`service_id`) REFERENCES `services` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci


Накатываю на неё миграцию:
Schema::table('booking_service', function (Blueprint $table) {
   $table->bigIncrements('id')->change();
});


В мускуле проблем нет, всё работает.

Сейчас перевожу проект на postgres и получаю ошибку:
 SQLSTATE[42P07]: Duplicate table: 7 ERROR:  relation "booking_service_id_seq" already exists (SQL: CREATE SEQUENCE booking_service_id_seq)


Schema::disableForeignKeyConstraints(); не срабатывает.

Куда копать?
Для постгреса для автоинкремента создаётся секвенс.
источник

A

Adel in Laravel для начинающих
Видимо оно два раза пытается его создать
источник

A

Adel in Laravel для начинающих
Не «видимо», а точно)
источник

A

Adel in Laravel для начинающих
Секвенс штука не связанная напрямую с таблицами
источник

AH

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

A

Adel in Laravel для начинающих
Поэтому в миграцию я бы по условию, что это постгрес добавил удаление секвенса, но проблема в том, что там значение есть, в секвенсе том.
источник

A

Adel in Laravel для начинающих
И вот кстати не верьте в сказки, что типа если юзаем орм, то можно легко на другую базу прыгнуть. Это огромная ложь.
источник

A

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

AH

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

A

Adel in Laravel для начинающих
Вот кстати прикольно, что люди наверно подумали, что я эксперт по постресу, а я его ни разу даже не видел)))
источник

AH

Andrey Helldar in Laravel для начинающих
Adel
Вот кстати прикольно, что люди наверно подумали, что я эксперт по постресу, а я его ни разу даже не видел)))
)))))
источник

AH

Andrey Helldar in Laravel для начинающих
У меня проблема в том, что разработку вёл на мускуле, и на сервере мускуль стоит, но приложуху надо засунуть в Raspberry Pi на архитектуру arm/v7
Но под него не существует официального образа мускуля...(((
источник

Gt

Galèriarch the Koban... in Laravel для начинающих
Andrey Helldar
У меня проблема в том, что разработку вёл на мускуле, и на сервере мускуль стоит, но приложуху надо засунуть в Raspberry Pi на архитектуру arm/v7
Но под него не существует официального образа мускуля...(((
Пришло время компилить бинари из сорцов
источник

Gt

Galèriarch the Koban... in Laravel для начинающих
источник

AH

Andrey Helldar in Laravel для начинающих
Galèriarch the Kobanian 🐗
Пришло время компилить бинари из сорцов
В 20-м году?)) Пффф)))
Я перестал исходники компилить году в 2001-м, когда компилил драйвера видеокарты под убунту)
источник

Gt

Galèriarch the Koban... in Laravel для начинающих
Andrey Helldar
В 20-м году?)) Пффф)))
Я перестал исходники компилить году в 2001-м, когда компилил драйвера видеокарты под убунту)
А крестовики так и живут.
источник

AH

Andrey Helldar in Laravel для начинающих
Но, чую, придётся заняться...
источник

S

Seroshka in Laravel для начинающих
Подскажите как в респонсе по апи можно шаблон вернуть ?
источник