#1 2022-07-13 18:34:54

beny258
Endora uživatel
Registrován: 1970-01-01
Příspěvky: 6

phpMyAdmin foreign key

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

#2 2022-07-13 21:14:33

JF
Endora rádce
Místo: ....nice u Plzně
Registrován: 2010-06-22
Příspěvky: 11,673

Re: phpMyAdmin foreign key

Dobrý den, u jakého uživatele a databáze toto provádíte? Máte navýšena práva pro daného uživatele?


Ján Fačkovec - Endora.cz by Webglobe
Email, Web, Webadmin, Webmail, Nápověda, Ceník

Offline

#3 2022-07-14 18:53:28

beny258
Endora uživatel
Registrován: 1970-01-01
Příspěvky: 6

Re: phpMyAdmin foreign key

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

#4 2022-07-14 19:58:35

JF
Endora rádce
Místo: ....nice u Plzně
Registrován: 2010-06-22
Příspěvky: 11,673

Re: phpMyAdmin foreign key

Navýšil jsem práva pro daného uživatele k dané databázy. Zkuste nyní. Vytvoření databáze lze provést jen přes webadmin.endora.cz - v phpmyadmin to není podporováno.


Ján Fačkovec - Endora.cz by Webglobe
Email, Web, Webadmin, Webmail, Nápověda, Ceník

Offline

#5 2022-07-14 21:11:19

beny258
Endora uživatel
Registrován: 1970-01-01
Příspěvky: 6

Re: phpMyAdmin foreign key

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 sad

Offline

#6 2022-07-15 10:38:47

JF
Endora rádce
Místo: ....nice u Plzně
Registrován: 2010-06-22
Příspěvky: 11,673

Re: phpMyAdmin foreign key

Máte ve sloupci ID povoleno textové zadání? Převažně se v ID používá jen číslo. Ověřte si formát tohoto sloupce.


Ján Fačkovec - Endora.cz by Webglobe
Email, Web, Webadmin, Webmail, Nápověda, Ceník

Offline

#7 2022-07-15 20:54:57

beny258
Endora uživatel
Registrován: 1970-01-01
Příspěvky: 6

Re: phpMyAdmin foreign key

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

#8 2022-07-16 09:06:50

JF
Endora rádce
Místo: ....nice u Plzně
Registrován: 2010-06-22
Příspěvky: 11,673

Re: phpMyAdmin foreign key

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


Ján Fačkovec - Endora.cz by Webglobe
Email, Web, Webadmin, Webmail, Nápověda, Ceník

Offline

#9 2022-07-16 12:38:22

beny258
Endora uživatel
Registrován: 1970-01-01
Příspěvky: 6

Re: phpMyAdmin foreign key

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 smile

Offline

Zápatí

Založeno na FluxBB | CZ a SK