Error in CREATE TABLE serendipity_delayed_trackbacks

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
deka
Regular
Posts: 41
Joined: Tue Jun 05, 2012 1:38 pm

Error in CREATE TABLE serendipity_delayed_trackbacks

Post by deka »

In meinem Blog taucht seit ein paar Tagen das nächste, unerklärliche Problem auf. Der Fehler entsteht bei Surfen durch die Seiten. Ich kann nicht erklären, wann es passiert. Manchmal muss ich mehr als zehnmal Links anklicken, manchmal passiert es bei jedem zweiten Klick.

Statt der normalen Seite erhalte ich einen SQL-ähnlichen String:

Code: Select all

Error in CREATE TABLE serendipity_delayed_trackbacks ( id int(11) NOT NULL , timestamp int(10) , PRIMARY KEY (id) )Array
Dazu kommen dann noch einige weitere Zeilen. Im Error.log des Apachen habe ich folgende Zeilen stehen:

Code: Select all

2016/04/11 16:25:00 [error] 7886#0: *746298 FastCGI sent in stderr: "PHP Fatal error:  Uncaught exception 'ErrorException' with message 'Warning: Cannot modify header information - headers already sent by (output started at /srv/datenkanal/web/html/include/db/pdo-sqlite.inc.php:240)' in Unknown:0
Stack trace:
#0 [internal function]: errorToExceptionHandler(2, 'Cannot modify h...', 'Unknown', 0, Array)
#1 [internal function]: ob_gzhandler('<!DOCTYPE html ...', 5)
#2 {main}
  thrown in Unknown on line 0" while reading upstream, client: 93.115.95.202, server: www.datenkanal.org, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/user/datenkanal/fcgi.socket:", host: "datenkanal.org"
Habt ihr einen Hinweis, wo ich weiter nach dem Fehler suchen kann bzw. was der Auslöser sein könnte?
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Error in CREATE TABLE serendipity_delayed_trackbacks

Post by Timbalu »

Das Zweite ist sicherlich Folge des Ersten.
Und das Erste wiederum basiert auf einem doppelten Create table Befehl, siehe
https://github.com/s9y/additional_plugi ... k.php#L323 ff
Ich nehme an Garvin wollte eines von beiden noch an PostgreSQL anpassen (oder das fehlende Komma ist schon der PGS fix für mysql *) und hat dies schlicht vergessen.
Probiere einmal das erste serendipity_db_schema_import ( $sql ); mit einem # oder // vorläufig zu deaktivieren.
Somit sollte die Meldung höchstens noch 1 Mal vorkommen.

Oder vielleicht gleich "einigermaßen richtig geordnet" (**), als:

Code: Select all

    function setupDB() {
	    global $serendipity;
		$sql = "CREATE TABLE {$serendipity['dbPrefix']}delayed_trackbacks (
id int(11) NOT NULL,
timestamp int(10) {UNSIGNED}
PRIMARY KEY (id)
)";
		if (preg_match('@(postgres|pgsql)@i', $serendipity['dbType'])) {
			$sql = "CREATE TABLE {$serendipity['dbPrefix']}delayed_trackbacks (
id int(11) NOT NULL,
timestamp int(10) {UNSIGNED},
PRIMARY KEY (id)
)";
		}
		serendipity_db_schema_import ( $sql ));
	}
Mit erfolgreicher Rückmeldung können wir das dann wahrscheinlich schnell fixen.

(*, **) wenn man das Untere für pgsql überhaupt (noch) benötigt...
Ich kann momentan aus dem Stegreif auch nicht sagen, ob mit oder ohne Komma für welche Datenbank es richtig und angebracht ist.
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
onli
Regular
Posts: 2828
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Error in CREATE TABLE serendipity_delayed_trackbacks

Post by onli »

In any case, the second create table should be a "CREATE TABLE IF NOT EXISTS". That works in all our supported database engines.
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Error in CREATE TABLE serendipity_delayed_trackbacks

Post by Timbalu »

Right! Could be used in both too.

Code: Select all

    function setupDB() {
        global $serendipity;
        $sql = "CREATE TABLE IF NOT EXISTS {$serendipity['dbPrefix']}delayed_trackbacks (
id int(11) NOT NULL,
timestamp int(10) {UNSIGNED}
PRIMARY KEY (id)
)";
        if (preg_match('@(postgres|pgsql)@i', $serendipity['dbType'])) {
            $sql = "CREATE TABLE IF NOT EXISTS {$serendipity['dbPrefix']}delayed_trackbacks (
id int(11) NOT NULL,
timestamp int(10) {UNSIGNED},
PRIMARY KEY (id)
)";
        }
        serendipity_db_schema_import ( $sql ));
    }
Well, postgres version 9.3+ will support this IF NOT EXISTS syntax - for older versions you'd need a workaround though.
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
deka
Regular
Posts: 41
Joined: Tue Jun 05, 2012 1:38 pm

Re: Error in CREATE TABLE serendipity_delayed_trackbacks

Post by deka »

Mit der letzten Änderung scheint es zu funktionieren. Ich habe jetzt eine ganze Weile im Blog rumgeklickt, ohne die Fehlermeldung zu erhalten. Reines Auskommentieren, wie in der ersten Antwort vorgeschlagen, funktioniert nicht.
Post Reply