xmurrix hat geschrieben: ↑Mo 3. Feb 2020, 16:17
Meines Erachtens sind da noch zwei Punkte offen:
1. Prüfen der DB Verbindung, ob auch ein gewünschter SQL-Mode gesetzt werden konnte
Dazu könnte man bei dem Test auch den sql_mode abfragen und mitgeben, z.B. als Array (false, $sql_mode).
Dann kann man true/false weiterhin abfragen, hat aber zusätzlich noch die Information dabei, die beim Setup angezeigt werden könnte.
Dann kann, zumindest ein erfahrener User, sehen, was auf dem Server eingestellt ist und selbst vergleichen.
Es machen ja nicht als Modes Probleme sondern eben dieser
strict_trans_tables.
2. Setzen des SQL-Modes bei einer Neuinstallation
Ja, und da möchte ich noch ganz uneigennützig auf meinen Text hinweisen:
viewtopic.php?f=98&t=43357&p=179261&hil ... de#p179267
Dort setze ich den sql_mode in der config.php in eine Konstante, die damit Global in Contenido verfügbar ist und kann dann in alle Funktionen diesen abfragen. Im Gegensatz zu Deiner Lösung, die nur bei der db-connect greift.
Man kann die Konstante vorher setzen und dann in Deiner Lösung in dem Nachtrag 2 (
viewtopic.php?f=98&t=43357&p=179261&hil ... de#p179124 ) lediglich die Konstante einfügen und deinen Klammerausdruck somit belassen.
Den Text in der Konstante können Laien leichter selbst verändern als so einen Klammerausdruck einbauen.
Ja, und sollten die Modi richtig in der Konstante per default richtig eingetragen sein, könnte man damit auch gleich beim Test die Modi vergleichen.
Ich suche nämlich noch nach der SQL-Anweisung, wie man strict_trans_tables explizit ausschaltet und die anderen Modi unberührt lässt.
Aber so wie ich es in der MySQL Dokumentation lese, kann man nur Modi setzen aber nicht einzelne ausschalten.
Weiß da jemand mehr darüber?
CONTENIDO auf die strikten SQL-Modes umzustellen ist nicht einfach und es wäre nicht abwärtskompatibel. Diese Änderungen sollten nicht in der 4.10'er Reihe gemacht werden, eher in 4.11 oder später.
Es ist ja auch nicht nur ein Contenido Problem, das haben alle, die früh mit Datenbank angefangen haben und viel alter Code überarbeitet werden müsste. Wie sieht es eigentlich bei Laravell aus?
Um das zu testen, müsste man auf traditional setzen, damit es einen Error gibt und dieser auch angezeigt wird. So könnte man sich Stück für Stück durcharbeiten. Wobei ich eine böse Ahnung hätte, wie viel Aufwand das machen könnte.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.