Topics strict problem

dbs

Dann solten wir ja für zukünftige Tests gut aufgestellt sein. Das meiste ist jedenfalls abgedeckt.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

Gast


paulchen

Gerne doch:

QuotePHP-Version: 7.3.6

Server-Version: 10.3.10-MariaDB-1:10.3.10+maria~bionic [STRICT]

Gast

what.....     :-o :-o :-o

schaust du bitte mal noch ins InfoFenster von WB, was da als PHP- und Mysql-Version steht?

paulchen

Quote from: dbs on June 06, 2019, 05:10:11 PM
....
Ein Test lokal mit mysql 5.7.11 und sql_mode=
QuoteONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
verlief fehlerlos.
Was hat Paulchen da alles in seinem mode?

Ich wundere mich schon eine ganze Weile, dass mein Strict-Mode so gnadenlos sein soll :-)

Ich erhalte auf den Befehl
SELECT @@GLOBAL.sql_mode;
folgende Ausgabe:
STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

also weniger strict, als bei dir - sofern ich aller richtig gemacht habe.

evaki

#41
<offtopic>
Für "Notfälle" kann man auch noch in v5.7.x "non strict" aktivieren.
Wer hostet, kann mit zwei DB ("non strict"/"strict") auf unterschiedlichen Ports operieren.
<ironie>
So kann man größere Kunden (mit Kohle) halten, denen beim Sterben zuschauen, und dann den Zeigefinger erheben "Ham'wer Euch doch jesacht." Für diese abgründige Freude lohnt sich vielleicht "non strict"
</ironie></offtopic>
Ich kenn die Roadmap bei MySQL nicht, wenn's so läuft wie bei PHP, ist dann irgendwann Schluß.
Zum Ende des Jahres wird es möglicherweise nirgendwo mehr php kleiner als 7.3 geben.

MfG. Evaki

CodeALot

Quote from: jacobi22 on June 04, 2019, 11:50:44 AM
Quotesave_item.php line 603 (Insert new row into database) are some values missing.

replace the originalcode

Excellent. I can confirm that this solves the problem with the duplicate-function in OFA using MySQLi in STRICT mode.

dbs

Ok, entfernt.
Ein Test lokal mit mysql 5.7.11 und sql_mode=
QuoteONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
verlief fehlerlos.
Was hat Paulchen da alles in seinem mode?
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

Gast

QuoteSchau mal in deine install.php z283 (ein Semikolon zu viel).
nicht gesehen   :oops: :oops:
die ganze Zeile 283 kann raus, die ID im Droplet kommt per Auto_Increment
genau wie diese Zeile 289, die ist nun überflüssig
$id = $found;

dbs

Ok, verstanden, NULL ist auch besser als ein sinnloses Datum.

Schau mal in deine install.php z283 (ein Semikolon zu viel).
Werd es wohl nur lokal testen können mit stricterem Strict Mode.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

Gast

Quote from: dbs on June 05, 2019, 05:02:38 PM
SELECT @@GLOBAL.sql_mode;
zeigt mir:
STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Da fehlt wohl einiges was bei Uwe oder Paulchen aktiv ist. Der Hoster hat es wohl etwas entschärft. Vielleicht sollte er noch STRICT_TRANS_TABLES rausnehmen. Aber ergibt der strict mode dann noch Sinn?

man schaue sich die unterschiedlichen DEFAULT VALUES in den Versionen 5.7.4 - 5.7.8 an, das wird mit jeder Version strenger -> https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_sql-mode
Unterschiede gibt es dann auch noch zwischen Windows und Linux. Das früher übliche  TEXT NOT NULL DEFAULT \'\' würde unter Windows einen error, unter Linux eine Warnung erzeugen

QuoteIn deiner install sieht das DEFAULT NULL bei DATE ungewöhnlich aus. Sollte da nicht sowas wie '2000-01-01 00:00:00'  stehen?

NULL oder '0' ist die Kurzform. (siehe Mysql - "You can also do this using the values '0' or 0, which are easier to write") PHPmyAdmin nutzt da z.b. die Wortform NULL

dbs

In der save_settings hatte ich 2 werte aus dem darüberliegenden auskommentierten vergessen zu übernehmen.
Glaube topics_per_page und use_timebased_publishing.

In deiner install sieht das DEFAULT NULL bei DATE ungewöhnlich aus. Sollte da nicht sowas wie '2000-01-01 00:00:00'  stehen?
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

Gast

QuoteDas hat sich erstmal erledigt, weil mein strict nur light war und niemandem anderen geholfen hätte.
Handwerkliche Fehler kämen noch dazu.

seh ich nicht so. Wie oben schon gesagt, ist es eher eine Frage der vorhandenen MySQL-Version.
In der Anlage die geänderte Datei install.php, gezippt, läuft unter MySQL-Strict und auch im non-strict-mode, sollte also für niemanden zum Schaden sein

geändert:
- die Feldtypen BLOB und TEXT haben kein DEFAULT VALUE, darum entfernt
- der Insert/Replace fürs Droplet war unvollständig bzw unsauber gecodet

Andere Sachen habe ich bisher nicht gefunden, das Anlegen von Seiten, Topics, Comments, oder Settings funktioniert, ich weiß aber nicht, wo da überall etwas geändert wurde

dbs

Ich wollte ja auch nur eine strict Variante der 0.9.4.1 zur Soforthilfe und zum Test für die 0.9.4.1 hier rein setzen.
Das hat sich erstmal erledigt, weil mein strict nur light war und niemandem anderen geholfen hätte.
Handwerkliche Fehler kämen noch dazu.

Bei CE erwarte ich keine Anpassungen für strict.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

Gast

Dieser "Sektenkram" breitet sich aber überall aus, ob jetzt bei den Forks oder anderen Systemen, die Anfragen in den Supportforen häufen sich.

Ich hab auch nicht wenige Kunden, wo die Webspaceverwaltung ein Teil ihres Paketes ist, Telefon, Internet, IPTV, EMailpostfächer. Für Gewerbetreibende, die vielleicht auch noch Dienstleister beauftragen, soll deine AuthCode und Tschüss-Variante kein Thema sein, wohl aber auch nicht mehr unbedingt kostenlos.

evaki

#31
Schönen guten Abend.
QuoteIch will nur vermeiden, dass es plötzlich eine unkompatible und alte WB-Version von Topics gibt.
Wie soll das gehen, wenn Dein Code unbehelligt bleibt, und nur die DB-strict-Regeln befolgt werden, die sich dann erst recht durch Kompatibilität auszeichnen.
Ich habe hier jaaaanz doll 'ne Ahnung, daß dieser Disput ausschließlich auf einem Mißverständnis beruht.

p.s. Am Wochenende gibt's mal wieder Kaiserschmarrn. Die Seele fühlt sich geschmeichelt. Mit wenigen Mitteln so etwas zu zaubern...  - Gut, können muß man's natürlich.
MfG. Evaki

grindmobil

Quote from: dbs on June 05, 2019, 05:02:38 PM
Der User sucht sich seine MySQL Version nicht aus. Wenn die nun strict ist, hilft es nicht weiter, dass du nur Kunden ohne strict hast und strict strikt ablehnst.

Der User = Kunde sucht sich sehr wohl seine SQL-Version aus. Genauso wie er sich aussucht, ob der SafeMode ON oder OFF ist (war)
Oder ob UploadMaxFilesize (fix und unveränderbar) auf 2 Mb gestellt ist, wie ich es unlängst erleben durfte.

Er sucht es sich aus, indem er den AuthCode verlangt und ab auf nimmer wiedersehen.

SQL Strict spielt nur dort eine Rolle, wo User und Hoster die selbe Person sind, und das wird auch so bleiben: SQL Strict gibt es seit 12 Jahren und die Verbreitung ist immer noch sehr speziell.

Aber das ist mir wurscht, das ist Sektenkram.

Ich will nur vermeiden, dass es plötzlich eine unkompatible und alte WB-Version von Topics gibt.
Man kann das Ding jederzeit umbenennen: Modulverzeichnis, info.php, search.php (der Function-Name) und die Tabellen-Namen: "topics" ersetzen durch DirName. Man kann nur nicht Dieses und Topics auf der gleichen Seite haben.


Gast

Quote from: dbs on June 05, 2019, 03:58:48 PM
Du meinst sicher die install.php.
Jepp

Quote from: dbs on June 05, 2019, 03:58:48 PM
Aber richtig, darin ist nicht alles wie es sein sollte für strict.
Droplet eintragen bzw, wenn schon vorhanden, updaten hatte auch nicht funktioniert. Weiter bin ich noch nicht, kämpfe noch mit der Grafikkarte

Gast

Für mich ist eigentlich das ausschlaggebend, was Evaki oben schon schrieb - ab v5.7 ist strict per default active.
Neben ein paar ausländischen Kunden, deren Hoster bei den Softwareupdates nicht so fix sind wie z.b. unsere großen deutschen Provider, hab ich nur einen, der bei einem kleinen Anbieter ist und selbst der hat Strict. Bei den großen" Deutschen wie 1&1, Strato, Host Europe oder auch AllInkl ist es etwa 50/50, die meisten haben es mit den Updateorgien im letzten Herbst bekommen.

Solang ich den Code kenne, was nun mal Open Source mit sich bringt, ist es sicherheitstechnisch kein Vorteil. Da sucht man sich die Felder halt im Script zusammen und gut ist.
Ist der DB-Aufbau aber nicht bekannt, dann kommt man mit z.b. einem einfachen Insert, wie ihn viele add.php älterer Module haben, nicht mehr weit

DarkViper

#27
SQL_MODE_STRICT  Ja oder Nein ist bei logischer Betrachtung eine völlig überflüssige Diskussion.
Wir ProgrammiererInnen haben keinen Einfluss darauf, was auf welcher Datenbank eingestellt ist.
Da jedoch ein Strict gecodetes Programm problemlos auf einer Nicht-Strict Datenbank läuft (was umgekehrt eben nicht der Fall ist), bleibt nur eine einzige logische Schlussfolgerung:

Wir coden grundsätzlich in Strict, alles funktioniert auf allen Datenbanken und wir freuen uns... 
Nicht-Strict Coder ärgern sich halt immer wieder aufs Neue über immer wieder das gleiche Problem.. (soll gegen Langeweile helfen)
[url=http://www.youtube.com/watch?v=tmzDAz6ZvFQ]Der blaue Planet[/url] - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen[br]
[i]"You have to take the men as they are... but you can not leave them like that !" :-P [/i]
[i]Das tägliche Stoßgebet: [b]Oh Herr, wirf Hirn vom Himmel ![/b][/i]

dbs

@Chio: Bist du Guru 139?
Der User sucht sich seine MySQL Version nicht aus. Wenn die nun strict ist, hilft es nicht weiter, dass du nur Kunden ohne strict hast und strict strikt ablehnst.

SELECT @@GLOBAL.sql_mode;
zeigt mir:
STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Da fehlt wohl einiges was bei Uwe oder Paulchen aktiv ist. Der Hoster hat es wohl etwas entschärft. Vielleicht sollte er noch STRICT_TRANS_TABLES rausnehmen. Aber ergibt der strict mode dann noch Sinn?
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

grindmobil

So, jetzt mit Tastatur..

Zu MySQL-Strict
Ich betreue ein paar Hundert Websites bei unterschiedlichsten Hostern - wo eben die Kunden  so sind.
Kein EINZIGER davon hat den Strikt Mode im Angebot, geschweige denn zwingend.
Ich habe auch nie etwas gehört, dass da was kommen würde.

Und da gibt es auch gute Gründe dafür:
Der Strikt Mode hat nur sehr theoretische Vorteile, in der Praxis keine. (Geschwindigkeit? Nein. Sicherheit? Nein)
Dafür hat man in der Praxis (als Hoster) den massiven Nachteil, dass man dauernd Kunden am Telefon hat, denen man die theoretischen Vorteile NICHT klar machen kann.

Und zum Thema:
Topics ist ein Core-Modul von WBCE und wird auch vom WBCE-Team gepflegt. Colinax macht das.

Wenn ihr Topics auf SQL-Strikt ändern wollt, dann haltet euch bitte an die Gepflogenheiten: Nehmt Kontakt auf, verwendet die neueste Version und gebt sie dann wieder so zurück, dass sie auch mit WBCE funktioniert. Wir sind ja keine Berserker hier.

Noch wissenswertes:
Topics löscht bei einer Deinstallation die Tabellen nicht, sondern benennt sie um. Das ist so, weil da sehr viel Inhalt drin sein kann und nicht jeder Trottel mal alles löschen können soll.
Auch Topics mit mehr Inhalt werden nicht gelöscht, sondern bekommen eine negative section_id

Die alten Felder mit rating sind obsolet, das ist über den Gedanken nie hinaus gekommen.

dbs

Du meinst sicher die install.php. Ja, komisch, damit hatte ich keine Probleme.
Aber richtig, darin ist nicht alles wie es sein sollte für strict. Da hat meine MariaDB wohl paar Anweisungen bekommen. Werd ich mal prüfen.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

Gast

Quote from: dbs on June 05, 2019, 03:40:48 PM
Ist dein Strict Mode stricter als strict?

ich denke schon, aber auch nicht so strict wie das vom User "Paulchen"  :oops:

Es kommt auf die Mysql-Version an. Die beiden genannten Punkte waren ja früher erlaubt bzw wurden nicht beanstandet

dbs

War eine Neuinstallation. Wußte nicht, dass nach Deinstallation noch Tabellen übrig bleiben (3 Stück).
Aber auch nach Löschen der Tabellen und Neuinstallation hab ich hier keine Porbleme mit dem Modul.
Ist dein Strict Mode stricter als strict?
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]