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

Symfony Security problem z JSON

Object Storage Arubacloud
+1 głos
804 wizyt
pytanie zadane 15 grudnia 2018 w PHP przez kenjiro244 Dyskutant (8,600 p.)

Witam zaczynam z symfony i chciałbym stworzyć system logowania.

Zgodnie z dokumentacją security tworzę entity User który następnie chciałbym wysłać do bazy danych mysql na xampie. Jednak kiedy wykonuje: doctrine:migrations:migrate pojawia się błąd:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'JSON NOT NULL, password VARCHAR(255) NOT NULL, UNIQUE INDEX UNIQ_8D93D64
9E7927C7' at line 1"

Czyli jest problem z JSON teraz prawdopodobnie jest to błąd związany z tym że moja wersja serwera mysql nie obsługuje JSON według tego wpisu. Teraz jak jestem w stanie to naprawić? Czy jedynym sposobem jest ręczne podniesienie wersji co nie wydaje się interesującym procesem :(. Czy może powinien zmienić wersję serwera w pliku doctrine.yaml która automatycznie ustawiana jest na 5.7.

W phpMyAdmin znalazłem taki wpis:

Wersja klienta bazy danych: libmysql - mysqlnd 5.0.12-dev - 20150407 - $Id: 

jednak ustawianie wersji na 5.0.12 nie poprawia w żaden sposób efektu końcowego.

komentarz 15 grudnia 2018 przez Tomek Sochacki Ekspert (227,510 p.)
to zrob po prostu dockera z odpowiednią baza, ale rak w ogole to dlaczego upierasz sie przy mysl jesli chcesz pracowac z jsno? tak, wiem ze mysl obsluguje json ale bardzo mozliwr, ze lepsza do twojego problemu bylaby jakas baza typu mongodb, ktora by default pracuje z kolekcjami jsonow i ma narzędzia do ich analizy.
komentarz 15 grudnia 2018 przez kenjiro244 Dyskutant (8,600 p.)
Czy chcę pracować z json? Nie wiem json jest potrzebne do jednego pola w tablicy dla ról użytkownika. Które jest tworzone automatycznie po skorzystaniu z opcji make:user.

Nawet nie wiem czy potem będę z niego korzystał, a narazie korzystam z dokumentacji i idę krok po kroku.

1 odpowiedź

0 głosów
odpowiedź 16 marca 2019 przez Eleanor67 Początkujący (440 p.)
wybrane 17 marca 2019 przez kenjiro244
 
Najlepsza

Przy niektórych wersjach mysql występuje problem z formatem json i pojawia się błąd przy próbie zapisu do bazy.

Po pierwsze - zamień typ pola w entity, z json na text. Zapewne chodzi o pole z rolami userów.

/**
 * @ORM\Column(type="text")
 */
private $roles = [];

Następnie usuń pliki z folderu "Migrations", bo jeśli przed update'm bazy używałeś komendy

doctrine:migrations:diff

To plik z błędnym zapytaniem się zapisał i przy każdym uruchomieniu 

doctrine:migrations:migrate

Wczytują się wszystkie po kolei.

Czyli nawet jeśli zmienisz typ pola i uruchomisz tę komendę, to mimo wszystko wyskoczy błąd, bo zostanie odczytany wcześniej zapisany plik. Jeśli usuniesz poprzednie wersje migracji (może wystarczy poprzednio wygenerowany plik, nie jestem pewna), to wszystko powinno być już ok.

komentarz 17 marca 2019 przez kenjiro244 Dyskutant (8,600 p.)

Jak nietrudno się domyślić już do tego doszedłem ;D. Zrobiłem jednak inaczej a mianowicie zmieniłem wersję serwera na niższą a potem wygenerowałem jeszcze raz od nowa usera oraz usunąłem migrację i wszystko poszło( Przynajmniej z tego co pamiętam). To dokładnie jest odpowiedź na ten problem:

Czyli nawet jeśli zmienisz typ pola i uruchomisz tę komendę, to mimo wszystko wyskoczy błąd, bo zostanie odczytany wcześniej zapisany plik. Jeśli usuniesz poprzednie wersje migracji (może wystarczy poprzednio wygenerowany plik, nie jestem pewna), to wszystko powinno być już ok.

komentarz 17 marca 2019 przez Eleanor67 Początkujący (440 p.)
Tak też myślałam, że już na to wpadłeś, ale sama napotkałam ten problem przy nowym projekcie w Symfony 4.2, a chwilę mi zajęło jego rozgryzienie :P Sam błąd wpisany w googlu sugeruje, że problemem jest ten diabelski json, nawet jak w następnym zapytaniu go nie ma, więc pomyślałam, że nie zaszkodzi dopisać odpowiedź.

Podobne pytania

0 głosów
0 odpowiedzi 84 wizyt
pytanie zadane 11 lutego 2020 w PHP przez dawid6512 Gaduła (4,550 p.)
0 głosów
4 odpowiedzi 272 wizyt
pytanie zadane 21 kwietnia 2018 w PHP przez wneku Nowicjusz (200 p.)
0 głosów
1 odpowiedź 223 wizyt
pytanie zadane 23 kwietnia 2019 w PHP przez `Krzychuu Stary wyjadacz (13,940 p.)

92,537 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...