SQL Syntax überprüfen

Hallo,

Bin gerade etwas am verzweifeln, hoffe ihr könnt mir helfen. :wink:
Ich habe über dbWrench eine DB modelliert (1. Fehler!) und habe mir die pg SQL ausgeben lassen.
Dieses File versuche ich nun schon längerem über phpPGAdmin zu importieren, leider ohne Erfolg. ;(
Wenn ich das komplette File auswähle, bekomm ich folgende Nachricht:

CMDP_DB_06070703.sql:4:
Fatal error: Call to a member function on a non-object in /var/www/dbadmin/phpPgAdmin-4.0.1/sql.php on line 26

Wenn ich per Copy/PAste arbeite, wurde mir jetzt immer der Charakter gesagt, bei welchem der Fehler sein soll.
Die ersten 10 Fehler habe ich über Words Zeichenzähltool gefunden und verbessern können, aber jetzt komm ich nicht mehr weiter.

Ich hänge gerade an folgender Stelle:

.../* Build Table Structure */
CREATE TABLE UserMessages
(
	id OID NOT NULL DEFAULT nextval('UserMessages_id_seq'),
	senderID OID NOT NULL,
	recipID OID NOT NULL,
	messageID OID NOT NULL,
	sendDate TIMESTAMP NOT NULL,
	readDate TIMESTAMP NULL DEFAULT 'NULL',
	deletedSender BOOL NOT NULL DEFAULT 'FALSE',
	deletedRecip BOOL NOT NULL DEFAULT 'FALSE'
);

Laut Zeichenzählung soll der Fehler im Wort CREATE (Zeichen 4660 ist das E)liegen.Nur wo ist der Fehler?

Gibt es ein Tool, mit dem ich einen Dump auf Syntaxfehler testen kann, das mir aber evtl Zeilen statt Zeichen als Fehler nennt?
Was bedeutet der Fehler im phpPgAdmin?

Danke schonmal für eure Hilfe!

Gruß
chrimp

Hallo chrimp,

du hast den Werte NULL als Text-Konstante angegeben!


Richtig sollte es heißen

readDate TIMESTAMP DEFAULT NULL,

Auch kannst Du

DEFAULT ‘FALSE’

in

DEFAULT FALSE

ändern.



mfg

fristo

Nur so als Seitentipp: mit der Groß/Kleinschreibung deiner Tabellen- und Spaltennamen solltest du aufpassen, die werden von PG alle als klein angenommen, wenn du sie nicht mit “” quotest.

Danke schon mal für eure Hilfe und sorry, dass ich mich erst jetzt melde.

Ich habe jetzt wieder stundenlang Fehler gesucht, aber bekomme es nciht hin.
Jetzt werde ich die Datenbank nochmal mit Clay nachbauen und hoffe, dass ich dort anständige Syntax bekomme.

Oder gibt es sonst eine bessere Alternative?

Danke!

Nachtrag:
Clay kann leider nur Version 7.4 ausgeben, ist diese kompatibel in eine 8.0 Datenbank?

Versuch es doch mal händisch mit PgAdmin. Dann kannst Du die Fehler auch besser einkreisen. Den Typ OID solltest Du vergessen. Der ist eine Altlast und wird nur intern verwendet.



mfg

fristo

Ok, danke.
Mit Clay hat es nun funktioniert und ich habe SERIAL statt OID genommen.

Nur wie kann ich nun das Hochzählen automatisieren?
Gerade schiebe ich meine Daten noch mit

 INSERT INTO public.user VALUES&#40] in die Tabelle.
Aber ist das nicht doppelt gemoppelt? ;)
Oder muss man wirklich in der SQL Syntax dieses nextval mit angeben?

Danke

Danke für die schn elle Antwort.
Wenn ich die Spalten direkt mit angebe, gehts natürlich, thx :wink:
Nur Frage ich mich immer noch, warum man nicht die OID zum identifieren nehmen sollte und eine eigene ID erstellen muss.

Betrachte die OID’s als Altlast. Wenn man seit der Version 8 unbedingt mit OID’s arbeiten will, muss das expliziet angegeben.

Warum also mehr, wenn weniger auch reicht und zum gleichen Ziel führt?



mfg

fristo

Ok, berichtigte Frage… :wink:

Sorry, hab die nächste Frage:
Mit welchem Datentyp würdet ihr eine Handynummer speichern?
Einfach als CHAR?
Integer erlaubt ja keine 0 zum Beginn…

Sry, dass ich hier so wild durcheinander frage…

Die Antwort hast Du doch schon selbst gegeben: “Integer erlaubt ja keine 0 zum Beginn…”. Bleibt als noch der Typ VARCHAR übrig.



mfg

fristo