Dotaz funkční na localhostu, nikoliv na hostingu
- Bulhy
- Člen | 6
Zdravím,
nahrál jsem svoji webovku na hosting, vše nastavil jak bylo potřeba. Naprostá většina věcí funguje, jen mám problém s jedním dotazem na databázi.
Mám tabulky
CREATE TABLE `available_lessons` (
`ID` varchar(255) NOT NULL,
`date` datetime NOT NULL,
`hour` int(10) unsigned NOT NULL,
`instructor_ID` int(11) NOT NULL,
PRIMARY KEY (`ID`),
KEY `instructor_ID` (`instructor_ID`),
CONSTRAINT `available_lessons_ibfk_1` FOREIGN KEY (`instructor_ID`) REFERENCES `instructors` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `instructors` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`ski` tinyint(3) unsigned NOT NULL DEFAULT '0',
`carving` tinyint(3) unsigned NOT NULL DEFAULT '0',
`snowboard` tinyint(3) unsigned NOT NULL DEFAULT '0',
`telemark` tinyint(3) unsigned NOT NULL DEFAULT '0',
`english` tinyint(3) unsigned NOT NULL DEFAULT '0',
`monoski` tinyint(3) unsigned NOT NULL DEFAULT '0',
`hours_teached` int(10) unsigned NOT NULL DEFAULT '0',
`user_ID` int(11) unsigned NOT NULL,
PRIMARY KEY (`ID`),
KEY `user_ID` (`user_ID`),
CONSTRAINT `instructors_ibfk_4` FOREIGN KEY (`user_ID`) REFERENCES `accounts` (`ID`) ON DELETE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
A dotaz:
$this->database->table('available_lessons')->where($data)->fetchAll();
kde $data:
[
'instructor.carving >= ?' => $this->carving,
'instructor.snowboard >= ?' => $this->snowboard,
'instructor.telemark >= ?' => $this->telemark,
'instructor.english >= ?' => $this->english,
'instructor.monoski >= ?' => $this->monoski
]
Na localhostu to normálně funguje, tzn. na databázi se dotazuje
SELECT `available_lessons`.ID, `available_lessons`.`date`, `available_lessons`.`hour`
FROM `available_lessons`
LEFT JOIN `instructors` `instructor` ON `available_lessons`.`instructor_ID` = `instructor`.ID
WHERE (`instructor`.`carving` >= 0) AND (`instructor`.`snowboard` >= 0) AND (`instructor`.`telemark`
>= 0) AND (`instructor`.`english` >= 0) AND (`instructor`.`monoski` >= 0)
Ovšem na hostingu hází chybu
Jak je vidět, tak to vygenerovalo dotaz bez joinu:
SELECT *
FROM `available_lessons`
WHERE (`instructors`.`carving` >= 0) AND (`instructors`.`snowboard` >= 0) AND
(`instructors`.`telemark` >= 0) AND (`instructors`.`english` >= 0) AND (`instructors`.`monoski` >=
0)
Nemohu přijít na to, proč. Všechny ostatní dotazy normálně fungují (je pravda, že tohle je asi jediný, kde si ten join vynucují už takto ve WHERE klauzuli). Za rady budu rád.
- Václav Pávek
- Backer | 100
Pro Nette 2.4 je u našeho CMS konečná PHP 7.2 – bez nutnosti úpravy kódu. Na PHP 7.3 problém s JOINy, jinak bez problému.
@Bulhy v případě problémů by mělo stačit aktualizovat nette/database na poslední verzi. Pak by to mohlo fungovat (testoval jsem problémový modul na Nette 3.0 a bylo to v pohodě).
@Šaman PHP 7.2 je jistota, ale primárně všechen kód tvořím na PHP 7.3.
Editoval Václav Pávek (26. 3. 2019 13:35)
- Václav Pávek
- Backer | 100
@Milo děkuju info, jsou někde bugy související s verzí PHP sepsané?
Potvrzuji že po aktualizaci PHP na v7.3.2 a aktulizaci nette/database na v2.4.8 je vše v pořádku
Editoval Václav Pávek (27. 3. 2019 9:43)