templateX sind ‘Vorlagen’. Dort drin sollte man Dinge erstellen, die man in später erstellten Datenbanken auch immer haben will, z.B. procedurale Sprachen, die man gern nutzt.
Es ist nicht dafür gedacht, dort drin Daten zu speichern. Also, okay, man kann das machen,
aber man sollte eher dafür dann mit createdb oder einer GUI dafür eigene Datenbanken erstellen.
Dann habe ich auf meinem Tabelspace ein neues Schema erstellt und dort drin die Tabellen.
Einem Schema kann man keinen tablespace zuordnen.
Dann sagt mir JDBC, dass das Schema nicht exisitert.
Wenn ich die Tabellen im Public-Schema erstelle, dann kommt die Meldung, dass die Relation nicht exisitiert.
Bitte informier Dich über die einzelnen Begriffe. Eine Datenbank ist ein kompletter Namensraum für sich. Dieser kann wiederum Schemas enthalten. Du kannst z.B. 2 Datenbanken erstellen, DB1 und DB2. In jedem dieser DBs kannst Du Schemas erstellen, z.B. je schema1 und schema2. Da drin wiederum kannst Du Tabellen erstellen. Du kannst nun z.B. in DB1 im Schema1 die Table foo erstellen, und in derselben DB im Schema schema2 eine Table foo. Innerhalb einer DB kannst Du mit dem kompletten Namen alle Tabellen ansprechen, also z.B. schema1.foo und schema2.foo, auch innerhalb z.B. eines SELECTs. Was nicht geht: aus einer DB eine Table in einer anderen DB ansprechen. (Okay, geht auch, via dblink, aber das will man eher nicht)
Falsche DB kann nicht sein, da auf meinem Server nur eine Postgres läuft und mein Connection-String lautet auf host:5432/template1/db.
Bin mir jetzt über die Syntax von Java ned sicher, aber ich vermute mal, du landest so in der DB
template1, Schema db.
SearchPath steht auf tools (mein eigenes Schema), public.
Aber auch wenn ich die Tabellen mit Schema.Name von Java aus anspreche, bekomme ich den Fehler.
Ich an Deiner Stelle würde nun mal schauen, welche Databases es bei Dir gibt. Und zwar mit
psql -l
Dann mit psql mir anschauen, was denn nun wo gelandet ist von Deinen Schemas und Tabellen und so.
Ich weiß, daß viele hier gern mit GUI wie PGAdminIII arbeiten. Das Problem ist aber, daß damit die eigentlichen Abläufe in der DB mehr oder weniger verdeckt werden und dann solche Probleme entstehen. Nein, das soll jetzt kein Flamewar gegen GUI sein, aber es ist nunmal nach meiner Erfahrung sehr sinnvoll, sich (auch) mit den CLI-Tools zu beschäftigen.
Andreas