Hallo Alle.
Ich benutze (möchte benutzen) eine HSQLDB (1.9) Datenbank.
Dazu benutze ich den Squirrel SQL Client und erstelle eine Datenbank.
Wenn das passiert ist, komt eine .script Datei heraus:
Ich versuche mich über Java mit der HSQL Datenbank zu verbinden:
Das schlägt fehl mit einer SQLException:
java.sql.SQLException: error in script file line: 1 user lacks privilege or object not found: FILES
at org.hsqldb.jdbc.Util.sqlException(Util.java:365)
at org.hsqldb.jdbc.Util.sqlException(Util.java:103)
at org.hsqldb.jdbc.JDBCConnection.<init>(JDBCConnection.java:3236)
at org.hsqldb.jdbc.JDBCDriver.getConnection(JDBCDriver.java:285)
at org.hsqldb.jdbc.JDBCDriver.connect(JDBCDriver.java:245)
at org.hk.dbframe.database.DataBaseHSQLDB.createConnection(DataBaseHSQLDB.java:78)
at org.hk.dbframe.gui.DBFrameStart.connectToDB(DBFrameStart.java:124)
at org.hk.dbframe.gui.DBFrameStart.<init>(DBFrameStart.java:91)
at org.hk.dbframe.gui.DBFrameStart.main(DBFrameStart.java:51)
Caused by: org.hsqldb.HsqlException: error in script file line: 1 user lacks privilege or object not found: FILES
at org.hsqldb.Error.error(Error.java:111)
at org.hsqldb.scriptio.ScriptReaderText.readDDL(ScriptReaderText.java:131)
at org.hsqldb.scriptio.ScriptReaderBase.readAll(ScriptReaderBase.java:88)
at org.hsqldb.persist.Log.processScript(Log.java:782)
at org.hsqldb.persist.Log.open(Log.java:189)
at org.hsqldb.persist.Logger.openLog(Logger.java:134)
at org.hsqldb.Database.reopen(Database.java:314)
at org.hsqldb.Database.open(Database.java:262)
at org.hsqldb.DatabaseManager.getDatabase(DatabaseManager.java:222)
at org.hsqldb.DatabaseManager.newSession(DatabaseManager.java:145)
at org.hsqldb.jdbc.JDBCConnection.<init>(JDBCConnection.java:3219)
Erstelle ich jedoch in Java (gleicher Connect-Befehl) eine HSQLDB Datenbank, dann sieht die .script Datei anders aus:
und die Anweisunge, die fehlen, stehen in der .properties Datei der Datenbank.
Jetzt die Frage:
Woran liegt es, daß ich mich mit der Datenbank nicht verbinden kann? Was mach ich falsch?
bzw. Squirrel kann sich mit der Datenbank problemlos verbinden. Was macht Squirrel anders?
Danke schon mal
Hatti
Ich benutze (möchte benutzen) eine HSQLDB (1.9) Datenbank.
Dazu benutze ich den Squirrel SQL Client und erstelle eine Datenbank.
Wenn das passiert ist, komt eine .script Datei heraus:
Java:
SET DATABASE UNIQUE NAME HSQLDB23C3C92AF9
SET DATABASE GC 0
SET DATABASE DEFAULT RESULT MEMORY ROWS 0
SET DATABASE EVENT LOG LEVEL 0
SET DATABASE SQL SIZE TRUE
SET DATABASE SQL NAMES FALSE
SET DATABASE TRANSACTION CONTROL LOCKS
SET FILES WRITE DELAY 10
SET FILES BACKUP INCREMENT TRUE
SET FILES CACHE SIZE 10000
SET FILES CACHE ROWS 50000
SET FILES SCALE 8
SET FILES DEFRAG 20
SET FILES NIO TRUE
SET FILES LOG SIZE 50
SET DATABASE TEXT TABLE DEFAULTS ''
SET DATABASE COLLATION "English"
CREATE USER SA PASSWORD ''
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
SET SCHEMA PUBLIC
CREATE CACHED TABLE PUBLIC.MEDIUMA(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1138) NOT NULL PRIMARY KEY,IDENTNR BIGINT NOT NULL,TITEL VARCHAR(255) NOT NULL,ANZAHL INTEGER NOT NULL,CONSTRAINT SYS_UN_108 UNIQUE(IDENTNR))
ALTER TABLE PUBLIC.MEDIUMA ALTER COLUMN ID RESTART WITH 1138
CREATE CACHED TABLE PUBLIC.MEDIUMB(IDENTNR BIGINT NOT NULL PRIMARY KEY,ORIGINALTITEL VARCHAR(255),PREIS DECIMAL(5,2),KAUFDATUM DATE,SPIELLAENGE TIME,SEITENZAHL INTEGER,FOREIGN KEY(IDENTNR) REFERENCES PUBLIC.MEDIUMA(IDENTNR) ON DELETE CASCADE ON UPDATE CASCADE)
...
Ich versuche mich über Java mit der HSQL Datenbank zu verbinden:
Java:
...
try
{
Class.forName("org.hsqldb.jdbcDriver");
}
catch (ClassNotFoundException c)
{
return false;
}
try
{
Connection dbConn = DriverManager.getConnection("jdbc:hsqldb:file:"+databasename, "sa", "");
}
catch (SQLException s)
{
JOptionPane.showMessageDialog(null, "Error connecting to DB", "Error", JOptionPane.ERROR_MESSAGE);
return false;
}
...
Das schlägt fehl mit einer SQLException:
java.sql.SQLException: error in script file line: 1 user lacks privilege or object not found: FILES
at org.hsqldb.jdbc.Util.sqlException(Util.java:365)
at org.hsqldb.jdbc.Util.sqlException(Util.java:103)
at org.hsqldb.jdbc.JDBCConnection.<init>(JDBCConnection.java:3236)
at org.hsqldb.jdbc.JDBCDriver.getConnection(JDBCDriver.java:285)
at org.hsqldb.jdbc.JDBCDriver.connect(JDBCDriver.java:245)
at org.hk.dbframe.database.DataBaseHSQLDB.createConnection(DataBaseHSQLDB.java:78)
at org.hk.dbframe.gui.DBFrameStart.connectToDB(DBFrameStart.java:124)
at org.hk.dbframe.gui.DBFrameStart.<init>(DBFrameStart.java:91)
at org.hk.dbframe.gui.DBFrameStart.main(DBFrameStart.java:51)
Caused by: org.hsqldb.HsqlException: error in script file line: 1 user lacks privilege or object not found: FILES
at org.hsqldb.Error.error(Error.java:111)
at org.hsqldb.scriptio.ScriptReaderText.readDDL(ScriptReaderText.java:131)
at org.hsqldb.scriptio.ScriptReaderBase.readAll(ScriptReaderBase.java:88)
at org.hsqldb.persist.Log.processScript(Log.java:782)
at org.hsqldb.persist.Log.open(Log.java:189)
at org.hsqldb.persist.Logger.openLog(Logger.java:134)
at org.hsqldb.Database.reopen(Database.java:314)
at org.hsqldb.Database.open(Database.java:262)
at org.hsqldb.DatabaseManager.getDatabase(DatabaseManager.java:222)
at org.hsqldb.DatabaseManager.newSession(DatabaseManager.java:145)
at org.hsqldb.jdbc.JDBCConnection.<init>(JDBCConnection.java:3219)
Erstelle ich jedoch in Java (gleicher Connect-Befehl) eine HSQLDB Datenbank, dann sieht die .script Datei anders aus:
Java:
SET DATABASE COLLATION "English"
CREATE USER SA PASSWORD ''
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
SET SCHEMA PUBLIC
CREATE CACHED TABLE PUBLIC.MEDIUMA(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1138) NOT NULL PRIMARY KEY,IDENTNR BIGINT NOT NULL,TITEL VARCHAR(255) NOT NULL,ANZAHL INTEGER NOT NULL,CONSTRAINT SYS_UN_108 UNIQUE(IDENTNR))
ALTER TABLE PUBLIC.MEDIUMA ALTER COLUMN ID RESTART WITH 1138
CREATE CACHED TABLE PUBLIC.MEDIUMB(IDENTNR BIGINT NOT NULL PRIMARY KEY,ORIGINALTITEL VARCHAR(255),PREIS DECIMAL(5,2),KAUFDATUM DATE,SPIELLAENGE TIME,SEITENZAHL INTEGER,FOREIGN KEY(IDENTNR) REFERENCES PUBLIC.MEDIUMA(IDENTNR) ON DELETE CASCADE ON UPDATE CASCADE)
...
und die Anweisunge, die fehlen, stehen in der .properties Datei der Datenbank.
Jetzt die Frage:
Woran liegt es, daß ich mich mit der Datenbank nicht verbinden kann? Was mach ich falsch?
bzw. Squirrel kann sich mit der Datenbank problemlos verbinden. Was macht Squirrel anders?
Danke schon mal
Hatti