Mediendatenbank streikt nach Update

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
sws
Regular
Posts: 23
Joined: Wed Oct 08, 2008 9:47 am

Mediendatenbank streikt nach Update

Post by sws »

Hallo,

ich bin neu hier und finde s9y an sich sehr gut. Ich betreibe einen Privatblog in einem privaten Netz ohne öffentlichen Zugang. Bislang habe ich die Version 1.02 benutzt. Das update auf 1.3.1 verlief äußerst geradlinig, wie im FAQ beschrieben.

Nach dem Update gestern ist die Mediendatenbank nicht mehr nutzbar. Ich kann Bilder und Videos hochladen, ohne dass es eine Fehlermeldung gibt. Die Dateien liegen auch im upload-Verzeichnis des servers. Sie sind aber in der Mediendatenbank nicht zu sehen. Weder die neuen noch die alten Dateien. die alten Dateien sind aber nach wie vor in den Artikeln eingebunden und sichtbar.

Ein zweiter Versuch verlief genauso wie der erste.

Server:
OpenBSD 3.4
PHP 4.3.3
Serendipity 1.3.1
PostgreSQL 7.3.2

Wäre schön, wieder Bilder einbinden zu können. Hat jemand einen Tipp?

Gruß,
Sebastian

PS: Ja, ich weiss, dass der Server nicht mehr der Jüngste ist. Aber er läuft einwandfrei (Never change a winning team!).
Gruß,
S.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Mediendatenbank streikt nach Update

Post by garvinhicking »

Hi!

Hast du beim update einen hinweis auf auszuführende SQL-Updates bekommen und das bestätigt? Von 1.0 auf 1.3 wurden diverse datenbanktabellen aktualisiert. Die einzelnen updates sind in den SQL-Datei im sql/ Verzeichnis zu finden. Prüfe mal deine Tabellen, ob sie alle Updates enthalten?

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
sws
Regular
Posts: 23
Joined: Wed Oct 08, 2008 9:47 am

Post by sws »

Erst mal Kompliment für die prompte Antwort! Vielen Dank!

Ja, bei dem update wurden mehrere Hinweise gegeben, sowohl für MySQL als auch PostgreSQL. Ich habe auf Bestätigen gedrückt und alles lief kritiklos ab.

Die letzte passende Datei in serendipity/sql ist "db_update_1.2alpha3_1.2_alpha4_postgres.sql". Fehlt da etwas mit "db_update_1.3*" oder so?

Gruß,
Sebastian
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Wenn eine *_postgres.sql datei nicht gefunden wird, wird übrigens die _mysql.sql Datei genommen.

Vergleich mal bitte die struktur deiner serendipity_images Tabelle mit der Struktur, die in der db.sql steht. Diese db.sql ist quasi der "Master", der für Neunistallation genommen wird.

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
sws
Regular
Posts: 23
Joined: Wed Oct 08, 2008 9:47 am

Post by sws »

Anbei die Tabelle serendipity_images als csv:

"id","name","extension","mime","size","dimensions_width","dimensions_height","date","thumbnail_name","authorid","path","hotlink","realname"
"2","raphi_lacht","jpg","image/jpeg","98651","640","480","1167772090","serendipityThumb","0","","",""
"1","familie01","jpeg","image/jpeg","73746","720","540","1144096000","serendipityThumb","0","","",""
"4","kinder01","jpg","image/png","619526","720","576","1194016761","","0","","",""
"9","heist_gitarre","jpg","image/jpeg","78507","480","640","1223451583","serendipityThumb","0","","","heist_gitarre.jpg"


Ich kann keinen unterschied zur db.sql erkennen. Die Feldnamen sind gleich. Lediglich die "id" ist als Mysql-SQLdatei mit "autoincrement" belegt. Das geht bei PostgreSQL etwas anders. Ebenso sind die int(11)-Felder in PostgresQL wahlweise mit int(2) oder int(4) belegt. Das dürfte aber nichts mit dem Problem zu tun haben.

Gruß,
Sebastian
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Okay, die Tabelle stimmt auch eigentlich. Hast Du die mögichkeit im PostgreSQL-Fehlerlog evtl. mal nach Fehlermeldungen zu schauen, ob da eine Abfrage fehlschlägt?

Kannst du die anderen Tabellen in der db.sql auch mal prüfen ob alle Spalten vorhanden und identisch sind? Ggf. gab es Änderungen an Tabellen die auch mit einbezogen werden, z.b. mediaproperties oder so.

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
sws
Regular
Posts: 23
Joined: Wed Oct 08, 2008 9:47 am

Post by sws »

postgreSQL-log gibt folgendes wieder, wenn ich die Admin-oberfläche öffne und auch danach bei öffnen der Mediendatenbank:

ERROR: 'default_with_oids' is not a valid option name
ERROR: Unable to identify an ordering operator '<' for type '"unknown"'
Use an explicit ordering operator or modify the query


Gruß,
Sebastian
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Kannst Du die exakte SQL-Abfrage die den Fehler wirft ausfindig machen? Steht die nicht im Logfile?

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
sws
Regular
Posts: 23
Joined: Wed Oct 08, 2008 9:47 am

Post by sws »

Hallo,

das einzige, was ich auf die Schnelle rausfinde, ist der Aufruf des browsers:

http://<server>/serendipity/serendipity_admin.php?serendipity[adminmodule]=media

Im logfile steht nichts weiter als das bereits gemeldete.
Gruß,
Sebastian

PS: Kann ich die PostgreSQL-DB auf MySQL umheben? Geht es dann womöglich? Ist PostgreSQL zu "exotisch" für S9y?
Gruß,
S.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Wenn du dir mal die include/functions_images.inc.php zu Herzen nimmst siehst du am Anfang folgende Funktion:

function serendipity_fetchImagesFromDatabase(

Relativ am Ende siehst du:

$rs = serendipity_db_query($query, false, 'assoc');

wenn Du davor mal folgendes einfügst:

echo $query;

müsstest Du die SQL-Anweisung beim aufruf der Meidendatenbank sehen. Diese SQL-Anweisung könntest du ggf. mal in phpPgAdmin oder so aufrufen?

Eigentlich müsste das in PostgreSQL durchaus funktionieren, zumindest gibt es einige Anwender bei denen es keine Probleme bereitet. Generell gilt jedoch schon, dass es mehr Entwickler für MySQL als PGSql gibt.

Ein umziehen müsste grundsätzlich möglich sein, ist aber schon mit etwas aufwand verbunden da die SQL-Datensätze in eine frische Installation rüberzuhieven.

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
sws
Regular
Posts: 23
Joined: Wed Oct 08, 2008 9:47 am

Post by sws »

Hi,
also das hat schon mal geklappt. die Abfrage lautet:

SELECT DISTINCT i.id, '' AS orderkey, i.name, i.extension, i.mime, i.size, i.dimensions_width, i.dimensions_height, i.date, i.thumbnail_name, i.authorid, i.path, i.hotlink, i.realname, a.realname AS authorname FROM serendipity_images AS i LEFT OUTER JOIN serendipity_authors AS a ON i.authorid = a.authorid LEFT JOIN serendipity_authorgroups AS acl_a ON acl_a.authorid = 1 LEFT JOIN serendipity_access AS acl_acc ON ( acl_acc.artifact_mode = 'read' AND acl_acc.artifact_type = 'directory' AND acl_acc.artifact_index = i.path ) WHERE 1=1 AND ( i.path IS NULL OR acl_acc.groupid IS NULL OR ( acl_acc.groupid = acl_a.groupid OR acl_acc.groupid = 0) OR ( acl_acc.artifact_id IS NULL ) ) ORDER BY i.date DESC LIMIT 8 OFFSET 0

ich habe das Ganze der DB übergeben mit dem selben Ergebnis wie vorher: die Fehlermeldung ist die gleiche wie im PostgreSQL-log:

ERROR: Unable to identify an ordering operator '<' for type '"unknown"'
Use an explicit ordering operator or modify the query


Gruß,
Sebastian
frabron
Regular
Posts: 8
Joined: Wed Oct 08, 2008 4:56 pm
Contact:

Post by frabron »

SELECT DISTINCT i.id, '' AS orderkey

ist eine ungültige Syntax. Entferne mal das ,'' aus dem Query und probiers nochmal mit der Datenbank. Dann sollte zumindest eine andere Fehlerquelle genannt werden, wenn der Query nicht sogar dann durchläuft.

So wie das für mich aussieht, wird dort ein Feldname nicht gesetzt sondern ein leerer String anstelle.
sws
Regular
Posts: 23
Joined: Wed Oct 08, 2008 9:47 am

Post by sws »

Meine Hochachtung!

Ich habe das '' und das Komma nach i.id entfernt und es erscheint ein ganz normales Resultat aus der Datenbank, eine wunderschön formatierte Relation mit den Namen der hochgeladenen Bilder usw.

Aber wie kriege ich jetzt in S9y die '' und das Komma weg?
Gruß,
Sebastian
frabron
Regular
Posts: 8
Joined: Wed Oct 08, 2008 4:56 pm
Contact:

Post by frabron »

Ehrlich gesagt, keine Ahnung. In der von Garvin genannten Datei include/functions_images.inc.php wird die Variable $query ja verwendet, vielleicht wird sie ja auch da zusammengebaut. Ich muss mir das mal ansehen. Aber vielleicht kommt Garvin ja noch vorbei und weiss genaueres. Der leere String deutet nämlich noch auf ein anderes Problem hin: Ein Feldname wird nicht richtig in den Querystring eingebaut.
sws
Regular
Posts: 23
Joined: Wed Oct 08, 2008 9:47 am

Post by sws »

Hi frabron,

das hiesse dann aber, dass das Komma hinter i.id wieder hineingehört und der fehlende Feldname zu der "AS orderkey"-Deklaration gehört.

Gruß,
Sebastian
Post Reply