SQL v commandu spuštěnýho přes terminál
- marty1452
- Člen | 10
Dobrý den,
vytvořil jsem skript, který volám přes terminál. Vlastně je to classa, která dědí od Symfony\Component\Console\Command\Command a měla by přidat záznamy do databáze.
Používám postgres a doctrinu.
Když command spustím napíše mi to syntax error v SQL, který to vytvoří.
Syntax error: 7 ERROR: syntax error at or near "default"
LINE 1: INSERT INTO roles (name, default, id) VALUES ($1, $2, $3)
^
INSERT INTO roles (name, default, id) VALUES (?, ?, ?)' with params ["U\u017eivatel", 1, "e2e84463-48dd-4a86-8f8f-4f83103e54b7"]
Zde je část kódu, která vyhazuje tento error:
$role = new Role($roleName, $this->default);
$this->roles->add($role);
Podle mě to vytváří SQL pro MYSQL a ne pro postgresql.
Nevíte někdo co s tím?
Děkuji za odpovědi.
- Marek Bartoš
- Nette Blogger | 1257
Imho máš stejný problém jako v této issue https://github.com/…/issues/2409
Vývojáři doctrine se bohužel kdysi rozhodli, že ne-escapování názvů
sloupců není bug (potenciálně bezpečnostní), ale feature.
default
je v SQL slovo se speciálním významem a tak se
escapovat musí. Řešení najdeš v dokumentaci https://www.doctrine-project.org/…mapping.html#…
Naštěstí ale existuje i nextras/orm, které toto řeší správně