Nejste přihlášeni
Stránky 1
Dobrý den,
nedaří se mi přes phpMyAdmin vytvořit cizí klíč, a to ani přes UI, ani pomocí SQL dotazu. Dle návodu zde https://youtu.be/7HTAX0dfJqg je potřeba v phpMyAdmin otevřít strukturu tabulky a pak nahoře kliknout na Relation view, nic takové tam však nevidím. Když se pokusím přidat cizí klíč přes SQL dotaz, např:
ALTER TABLE Orders ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
tak se pouze vytvoří index klíč, ale reálně to žádný efekt nemá (přidání záznamu s cizím klíčem indexujícím neexistující záznam v druhé tabulce nevyhodí chybu).
Předem děkuji za pomoc.
Offline
Uživatel beny258, databáze urbanclimbingbrno. Práva by navýšena být měla. Teď jsem si však všiml, že mi phpMyAdmin vypisuje panel:
Některé z rozšířených funkcí phpMyAdmina nelze používat. Zjistěte proč.
Přičemž po otevření odkazu "Zjistěte proč" se objeví informace:
Konfigurace pmadb… není v pořádku
Obecné funkce relací Vypnuto
a dodatek:
Create a database named 'phpmyadmin' and setup the phpMyAdmin configuration storage there.
Na vytvoření databáze phpmyadmin však nemám práva, což je mi sděleno při pokusu o vytvoření oné databáze:
You do not have necessary privileges to create a database named 'phpmyadmin'. You may go to 'Operations' tab of any database to set up the phpMyAdmin configuration storage there.
Offline
Offline
Zkusil jsem do tabulky `gallery_areas` vložit foreign key následujícím dotazem:
ALTER TABLE gallery_areas ADD CONSTRAINT FK_AreaImgState FOREIGN KEY (state_id) REFERENCES states(id);
Dotaz byl úspěšně proveden. Následně jsem do tabulky vložil nový záznam dotazem:
INSERT INTO `gallery_areas` (`id`, `area_id`, `filename`, `state_id`, `description`) VALUES (NULL, '2', 'IMG_20210318_103646.jpg', 'abcd', NULL);
Dotaz byl opět úspěšně proveden. V tabulce `states` však neexistuje záznam, který by měl `id`='abcd'. Zřejmě to tedy stále nefunguje
Offline
Offline
Ano, vím o tom. V době kdy jsem databázi tvořil jsem to nevěděl a jako primární klíč tabulky `states` použil sloupeček `id` typu char(4). Předělávat se mi to nechtělo a na funkčnosti by to nemělo mít vliv. Nicméně vytvořit cizí klíč se mi nedaří ani pro sloupeček `area_id`, které je klasického typu int:
ALTER TABLE gallery_areas ADD CONSTRAINT FK_ImgAreaID FOREIGN KEY (area_id) REFERENCES areas(id);
Pokus o vložení záznamu s hodnotou `area_id` třeba 9999 (neodpovídající žádnému záznamu v areas) dopadne úspěšně, což by se dít nemělo.
Offline
Bohužel tvorbou se nezabývám a netuším jak by tyto příkazy měli fungovat a co by měli/neměli následně povolit.
Proto vám nejsem v tomto schopen pomoci. Klíče v phpmyadmin vidím vytvořeny, viz https://ctrlv.cz/9cLe
Offline
Ano, to jsou ty indexové klíče, ale reálně nemají žádný efekt. Nevadí, ochranu proti cizímu klíči odkazujícímu na neexistující záznam jsem si implementoval na úrovni PHP, takže bez toho asi přežiju
Offline
Stránky 1