Je suis en train de créer un programme avec Java qui doit accéder à une base de données Derby. Cependant, lorsque j'essaie de l'exécuter, j'obtiens l'erreur "Schema RCVT n'existe pas". Et, comme je l'ai codé, le programme se termine. Here's mon code:"Le nom de schéma du schéma n'existe pas" avec Java Derby
public ResultSetTableModel(String mController,
String URL,
String USERNAME,
String PASSWORD,
String mQuery) throws SQLException, ClassNotFoundException {
Class.forName(mController);
mConnection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
mStatement = mConnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
mConnected = true;
setConsult(mQuery);
}
Voici les paramètres que j'envoie à cette méthode:
private static final String CONTROLLER = "org.apache.derby.jdbc.EmbeddedDriver";
private static final String URL = "jdbc:derby:GOT";
private static final String USERNAME = "rcvt";
private static final String PASSWORD = "rcvt";
private static final String PREDETERMINED_CONSULT = "SELECT * FROM Person";
Et c'est le script SQL j'exécute à partir ij> à l'intérieur du projet:
DROP TABLE Person;
CREATE TABLE Person (
id int PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY ,
age int NOT NULL,
name VARCHAR (15) NOT NULL,
house VARCHAR (15) NOT NULL,
allegiance VARCHAR (15) NOT NULL,
alias VARCHAR (30) NOT NULL,
continent VARCHAR (10) NOT NULL,
region VARCHAR (25) NOT NULL,
title VARCHAR (50) NOT NULL,
active BOOLEAN NOT NULL
);
INSERT INTO Person (age, name, house, allegiance, alias, continent, region, title, active) VALUES (43, 'Cersei', 'Lannister', 'Lannister', 'The Lioness', 'Westeros', 'The Crownlands', 'Queen Of The Andals And The First Men', TRUE);
J'ai cherché un moment pour cette erreur et je ne trouve pas la solution n'importe où.
C'est l'exception que je reçois:
"C:\Program Files\Java\jdk1.8.0_131\bin\java" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2017.1.2\lib\idea_rt.jar=50596:C:\Program Files\JetBrains\IntelliJ IDEA 2017.1.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_131\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\rt.jar;C:\Users\Vidriales Trujillo R\IdeaProjects\AccesoDB\out\production\AccesoDB;C:\Program Files\Java\jdk1.8.0_131\db\lib\derby.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derby.war;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbynet.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyrun.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbytools.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyclient.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyLocale_cs.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyLocale_es.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyLocale_fr.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyLocale_hu.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyLocale_it.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyLocale_pl.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyLocale_ru.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyLocale_de_DE.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyLocale_ja_JP.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyLocale_ko_KR.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyLocale_pt_BR.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyLocale_zh_CN.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyLocale_zh_TW.jar;C:\Program Files\Java\jdk1.8.0_131\db\lib\derbyoptionaltools.jar" Runner
java.sql.SQLSyntaxErrorException: Schema 'RCVT' does not exist
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(Unknown Source)
at ResultSetTableModel.setConsult(ResultSetTableModel.java:88)
at ResultSetTableModel.<init>(ResultSetTableModel.java:28)
at ConsultPersons.<init>(ConsultPersons.java:41)
at GUI.<init>(GUI.java:9)
at Runner$1.run(Runner.java:10)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: ERROR 42Y07: Schema 'RCVT' does not exist
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getSchemaDescriptor(Unknown Source)
at org.apache.derby.iapi.sql.StatementUtil.getSchemaDescriptor(Unknown Source)
at org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(Unknown Source)
at org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(Unknown Source)
at org.apache.derby.impl.sql.compile.TableName.bind(Unknown Source)
at org.apache.derby.impl.sql.compile.FromBaseTable.bindNonVTITables(Unknown Source)
at org.apache.derby.impl.sql.compile.FromList.bindTables(Unknown Source)
at org.apache.derby.impl.sql.compile.SelectNode.bindNonVTITables(Unknown Source)
at org.apache.derby.impl.sql.compile.DMLStatementNode.bindTables(Unknown Source)
at org.apache.derby.impl.sql.compile.DMLStatementNode.bind(Unknown Source)
at org.apache.derby.impl.sql.compile.CursorNode.bindStatement(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
... 21 more
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ConsultPersons.<init>(ConsultPersons.java:63)
at GUI.<init>(GUI.java:9)
at Runner$1.run(Runner.java:10)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Quand il atteint cette ligne:
mTableModel = new ResultSetTableModel(CONTROLLER, URL, USERNAME, PASSWORD, PREDETERMINED_CONSULT);
qui appelle cette méthode:
public void setConsult(String mConsult) throws SQLException,
IllegalStateException {
if (!mConnected) {
throw new IllegalStateException("Theres no DB connection");
}
mAllResults = mStatement.executeQuery(mConsult);
mMetaData = mAllResults.getMetaData();
mAllResults.last();
mNumberOfRows = mAllResults.getRow();
fireTableStructureChanged();
}
Incluez l'exception ** exact ** que vous avez obtenue, avec sa trace de pile, et spécifiez la ligne de code ** exact ** que vous avez exécutée lorsque vous avez reçu ce message. –
@BrianPendleton juste inclus –
Ce n'est pas évident pour moi pourquoi vous obtenez cette exception. Il pourrait être utile de vider la valeur de 'mConsult' dans la méthode setConsult(): est-ce vraiment "SELECT * FROM Person"? Puisque vous vous connectez en tant qu'utilisateur 'rcvt', vous devriez avoir le schéma 'rcvt' comme schéma actuel automatiquement. Peut-être que lorsque vous avez ouvert votre session "ij", vous ne vous êtes pas connecté en tant qu'utilisateur 'rcvt'; Au lieu de cela, vous vous êtes connecté en tant qu'utilisateur 'app'? Voir https://stackoverflow.com/questions/15735068/omit-schema-in-the-derby-query –