Bin gerade etwas am verzweifeln, hoffe ihr könnt mir helfen.
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?
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.
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(] 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
Nur Frage ich mich immer noch, warum man nicht die OID zum identifieren nehmen sollte und eine eigene ID erstellen muss.