2016-07-21 15 views
0

Ich verwende HSQLDB zusammen mit Spring. Immer wenn ich versuche, eine Insert-Anweisung auszuführen, erhalte ich den Fehler user lacks privilege or object not found: USERS.
Die USERS Tabelle löscht existiert in der HSQLDB Database noch ich stoße auf diesen Fehler.

HSQLDB ConfigurationHSQLDB: Benutzer fehlt Privileg oder Objekt nicht gefunden: USERS

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.hsqldb.jdbcDriver"/> 
    <property name="url" value="jdbc:hsqldb:mem:."/> 
    <property name="username" value="SA"/> 
    <property name="password" value=""/> 
    </bean> 



OffersDAO.java

public class OffersDAO { 

    private JdbcTemplate jdbcTemplate; 

    @Autowired 
    public void setDataSource(DataSource dataSource) { 
     this.jdbcTemplate = new JdbcTemplate(dataSource); 
    } 

    public void addUser(String email, String password) { 

     String sql = "INSERT INTO USERS(EMAIL, PASSWORD) VALUES(?, ?)"; 

     jdbcTemplate.update(sql, email, password); 

     System.out.println("ADDED USER : " + email + " , " + password); 


    } 

} 

enter image description here

+0

Sind Sie sicher, dass es mit der richtigen Datenbank verbunden ist? – Babel

+0

Ja! Ich bin mir sicher. –

Antwort

0

Die URL "jdbc: hsqldb: mem :." bedeutet eine speicherinterne Datenbank, die innerhalb des Java-Prozesses sichtbar ist, der mit ihr verbunden ist. Wenn Sie DatabaseManager getrennt von Ihrem Programm starten, erstellt dieselbe URL eine andere Datenbank innerhalb des Java-Prozesses des DatabaseManagers.

Verwenden Sie einen HSQLDB-Server für den Zugriff auf eine Datenbank aus zwei verschiedenen Prozessen.

0

HSQLDB hat das Standardschema PUBLIC. Alle SQL-Abfragen zeigen auf PUBLIC; Wenn Sie Ihr eigenes Schema wie zB erstellt haben: OWNSCHEMA dann die xxx.script bearbeiten und die folgende Zeile

ERSTE SCHEMA PUBLIC

zu

SET DATABASE STANDARD AUSGANGS SCHEMA OWNSCHEMA

SET DATABASE STANDARD ändern