Es ist etwas sehr falsch mit Doctrine/MySQL oder ich bin einfach nur dumm. Ich versuche, eine einfache Update-Abfrage auf Anfrage Einheit auszuführen:Fehler beim Aktualisieren der Entity - Symfony 3
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| form_id | int(11) | YES | MUL | NULL | |
| name | varchar(255) | NO | | NULL | |
| question_type | varchar(255) | NO | | NULL | |
| validation | longtext | YES | | NULL | |
| required | tinyint(1) | YES | | NULL | |
| order | int(11) | NO | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
mit:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('order', IntegerType::class)
->add('name', TextType::class)
->add('questionType', TextType::class)
->add('validation', TextType::class)
->add('required', CheckboxType::class)
;
}
und
...
$em->persist($question);
...
Ich erhalte diese Fehlermeldung:
Uncaught PHP Exception Doctrine \ DBAL \ Exception \ SyntaxErrorException: "Während der Ausführung von UPDATE-Fragen ist eine Ausnahme aufgetreten SET-Reihenfolge =? WO ID =? ' mit Parametern [1, 12]
Jedes andere Feld validiert ohne Probleme!
Wenn ich versuche, die gleiche Abfrage in der Konsole ausführen können, ist dies das Ergebnis:
mysql> UPDATE questions SET order=1 WHERE id=14;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order=1 WHERE id=14' at line 1
Wenn ich die gleiche Abfrage in Workbench laufen, ist alles ok:
UPDATE `questions` SET `order`='2' WHERE `id`='7';
Schließlich, Aktualisierung einer anderen Spalte in dieser Tabelle (auch Ganzzahl!), Wie folgt:
update questions set form_id=5 where id=7;
Geht wie erwartet.
Was ist los?
EDIT: zu vereinfachen, warum das funktioniert:
UPDATE questions SET form_id=5 WHERE id=7;
Und das nicht:
UPDATE questions SET order=3 WHERE id=7;
Richtig, ich habe es gerade Arbeit umbenennen zu (zufälliger Name) orderx;) Ich denke nicht daran, weil Reihenfolge immer von BY gefolgt wird. Also ist BY auch reserviert? Trotzdem danke. – Tompo
Gern geschehen, ich schätze, der Sprachparser wird ausgelöst, wenn 'order' gefolgt von einem Leerzeichen steht – user10089632