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 » Mon Apr 11, 2016 4:39 pm

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?

User avatar
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Error in CREATE TABLE serendipity_delayed_trackbacks

Post by Timbalu » Mon Apr 11, 2016 5:34 pm

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

User avatar
onli
Regular
Posts: 2260
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Error in CREATE TABLE serendipity_delayed_trackbacks

Post by onli » Tue Apr 12, 2016 2:56 pm

In any case, the second create table should be a "CREATE TABLE IF NOT EXISTS". That works in all our supported database engines.

User avatar
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Error in CREATE TABLE serendipity_delayed_trackbacks

Post by Timbalu » Tue Apr 12, 2016 3:47 pm

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 » Wed Apr 13, 2016 10:55 pm

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