• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Laravel, automatyczna zmiana wartości domyślnych w bazie danych doctrine/dbal

0 głosów
1,016 wizyt
pytanie zadane 16 marca 2019 w PHP przez Grzegorz Mikina Dyskutant (8,060 p.)
Mam takie pytanie, potrzebuję dodać takie rozszerzenie do composer.json a mianowicie doctrine/dbal v.2.4.2 bo nie mogę przeprowadzić migracji. I jak w cmd daję composer install to wszystko się ładnie ładuje i wyświetla mi sukces, później jak chcę dać php artisan migrate , wyświetla mi się błąd że brakuję właśnie dodatku doctrine/dbal. Czy ktoś się spotkał z takim problemem? SKąd ten błąd skoro ja to rozszerzenie mam zainstalowane.
komentarz 22 marca 2019 przez Arkadiusz Waluk Ekspert (291,530 p.)

Przecież masz kompletnie inny błąd. Błędu o braku Doctrine DBAL już nie ma, czyli teraz jest dobrze zainstalowany.

Migrating: 2019_03_21_011314_add_foreign_doctors_to_visits

...

Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1005 Can't create table `system`.`#sql-2734_625` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `visits` add constraint `visits_doctor_id_foreign` foreign key (`doctor_id`) references `users` (`id`))

Prawdopodobnie kolumna doctor_id w visits ma inny typ niż kolumna id w users. Bez kodu tych migracji ciężko powiedzieć.

komentarz 22 marca 2019 przez Grzegorz Mikina Dyskutant (8,060 p.)
Ogólnie rzecz biorąc wszyscy użytkownicy są przechowywani w jednej tabeli Users. Users był z początku BigIntem , doctor_id był intem. Nie wiem czy to do końca poprawne działanie, ale zmieniłem atrybut ręcznie. A czy doctrine/dbal nie powinien tego problemu sam rozwiązać ?
komentarz 22 marca 2019 przez Grzegorz Mikina Dyskutant (8,060 p.)
Raczej bym stawiał na jakąś literówkę w nazwie klucza obcego.
komentarz 22 marca 2019 przez Arkadiusz Waluk Ekspert (291,530 p.)
Doctrine samo niczego nie rozwiązuje, umożliwia tylko to że można zrobić ->change() w migracji, czyli zmodyfikować już istniejącą kolumnę. Jak zmieniłeś ręcznie na bazie to też może być (ale wypadałoby i poprawić w migracji, aby przy kolejnym postawieniu od zera działało).

Ja nadal będę obstawiał inne typy dla łączonych kolumn, jakby była literówka to nie mógłby ich znaleźć i komunikat byłby inny.
1
komentarz 22 marca 2019 przez Grzegorz Mikina Dyskutant (8,060 p.)
$table->integer('patient_id')->unsigned()->change(); W tym wierszu był błąd.
$table->integer('patient_id')->unsigned('')->change(); <<< ---- coś takiego było i to był jeden z problemów, drugi problem to ręczne ingerowanie w tabele w bazie danych.
Problem rązwiązano następująco. Usunąłem całą bazę danych i przeprowadziłem ponownie całą migracje.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 1,044 wizyt
pytanie zadane 17 września 2019 w PHP przez marta.zawisla Początkujący (260 p.)
0 głosów
1 odpowiedź 460 wizyt
pytanie zadane 19 stycznia 2019 w PHP przez kasia101 Początkujący (290 p.)
+1 głos
2 odpowiedzi 710 wizyt
pytanie zadane 18 lipca 2018 w PHP przez Wojtek85 Nowicjusz (230 p.)

93,733 zapytań

142,669 odpowiedzi

323,287 komentarzy

63,295 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...