Dotaz na cizí klíč se na localhostu přeloží správně, na produkci (WEDOS) ne

Martin
Člen | 171
+
0
-

Ahoj.

Narazil jsem na problém, se kterým si nevím vůbec rady. Mám stejnou strukturu databáze na vývojovém počítači (WAMP s MySQL) i na produkci (WEDOS s MariaDB), stejně definované cizí klíče.

Struktura databáze

Dotaz v NDB

$hlasy = $this->database->table('hlas')->where('odpoved_id.hlasovani_id', $hlasovaniId);

kde $hlasovaniId = 1, se na localhostu správně přeloží na:

SELECT `hlas`.`id`, `hlas`.`user_id`, `hlas`.`odpoved_id`
FROM `hlas`
LEFT JOIN `odpoved` `odpoved_id` ON `hlas`.`odpoved_id` = `odpoved_id`.`id`
WHERE (`odpoved_id`.`hlasovani_id` = '1')

zatímco na produkci na:

SELECT *
FROM `hlas`
WHERE (`odpoved_id`.`hlasovani_id` = '1')

což vede k chybě:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'odpoved_id.hlasovani_id' in 'where clause'

Tabulky jsou v obou případech v InnoDB. Tušíte někdo, v čem může být rozdíl? V jiných případech se tam reference vyhodnocují správně.

Editoval Martin (1. 5. 2020 11:03)

IJVo
Člen | 38
+
0
-

Ahoj,
proč máš na locale jinou databázi než na produkci?
Tak si nainstaluj i na locale MariaDB a vyzkoušej, jestli to bude taky dělat chybu nebo ne.

Martin
Člen | 171
+
0
-

Děkuji za odpověď. Moc mi ale nepomůže, mám MySQL, protože je na většině serverů a nerad bych si rozvrtal funkční vývojové prostředí kvůli jednou experimentu. Na WEDOSU přešli na MariaDB a vše ostatní mi tam funguje, v této oblasti by mělo být plně kompatibilní s MySQL. Cizí klíče tam určitě Nette Database Explorer rozpozná dobře. Generuji si tam mnoho formulářů přímo na produkci pomocí generátoru, který používá vnitřní struktury Nette Database právě k identifikaci všech cizích klíčů a možných vazebních tabulek a tam vše funguje bez problémů.
Ptal jsem se spíš, jestli se někdo s tímto problémem již nesetkal nebo neví, čím by to mohlo být. Případně zda někdo neví, jak na produkci trasovat vytváření SQL v Nette Database, aniž bych vepisoval trasování do zdrojových kódů Nette.
Prozatím jsem to vyřešil použitím query s LEFT JOIN místo Nette Database Exploreru, ale rád bych zjistil, v čem je problém.

Editoval Martin (3. 5. 2020 1:25)

Phalanx
Člen | 310
+
0
-

@Martin Máš foreign klíč definovaný i na serveru? V MariaDB problém není…