Postgres Datenbank ist gelockt?!

Hallo,

ich möchte eine operation auf postgres durchführen, bekomme aber die Information, dass meine DB gelockt ist.
Auf Datenbrock habe ich jetzt eine locktabelle gefunden in der eine ProzessID gespeichert ist. Der Prozess wurde aber schon gekillt auf dem Ubuntu Server. Kann ich jetzt einfach die Tabelle löschen und dann gehts wieder? Oder mache ich dann was kaputt?

vielen Dank

Was genau ist denn die Fehlermeldung?

(Und was ist “Datenbrock”?)

Sollte Datenbank heißen. Die Fehlermeldung lautet: “java.lang.Exception: Cannot connect to database. Database is already locked by another process.” Versuche über eine javaapp zuzugreifen auf ubuntu.


Vielen Dank

Das ist keine Postgres Fehlermeldung.

Klingt mehr nach eine embedded Datenbank wie HSQLDB, H2 oder Apache Derby.

Bist Du Dir wirklich sicher, dass Du Postgres verwendest? Wie sieht denn die JDBC URL aus, mit der Du Dich verbinden willst?

Habe gerade in den Quellcode des Programmes geguckt.

protected void checkAndDeleteLock(String databaseName, String user, String password, int port, String serverName) throws SQLException, ClassNotFoundException {
		String url = "";
		try {
                        Class.forName("org.postgresql.Driver");
			url = "jdbc:postgresql://" + serverName + ":" + port + "/"
			+ databaseName + "?user=" + user + "&password=" + password;
			Connection conn = DriverManager.getConnection(url);
			java.sql.Statement st = conn.createStatement();
			st.execute("DROP TABLE IF EXISTS locked;");
			st.close();
                }

Scheint ne spezielle Art des Programmes zu sein und in diesem Fall geht das Vorhaben irgendwie schief. Seltsam. Probiere die Tabelle zu löschen.

Einen gelockte “Datenbank” gibt es in Postgres nicht.

Für micht klingt das nach einer Fehlermeldung des Programms. Irgendwo weiter unten in dem Code wird vermutlich die Exception geworfen und da dürfte dann auch die Fehlermeldung zu finden sein.

Nur mal am Rande: ist dir schon einmal aufgefallen, dass die Tabelle “locked” in dem Stück Source-Code sogar behandelt wird?

st.execute("DROP TABLE IF EXISTS locked;");

Dein Problem hat ganz sicher überhaupt nichts mit deiner PostgreSQL-DB an sich zu tun, sondern mit der Applikation.