java.sql.SQLException: ORA-01403: no se han encontrado datos en la estructura.getDescriptor().getMetaData()

Yo uso oracle.sql.STRUCT clase. Por el siguiente código :

ResultSetMetaData metaData = struct.getDescriptor().getMetaData();

Puedo obtener esta excepción:

java.sql.SQLException: ORA-01403: no data found
ORA-06512: at line 1
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:218) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:969) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1190) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3370) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3476) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4400) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.oracore.OracleTypeADT.initADTAttrNames(OracleTypeADT.java:2423) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.oracore.OracleTypeADT.getAttributeName(OracleTypeADT.java:2246) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.StructMetaData.getColumnName(StructMetaData.java:175) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]

Whay anterior se produjo la excepción? ¿Cuál es la solución?

  • Estimación aleatoria, tiene algunos entubado los nombres de columna que no le ha dicho a Java a esperar… Todo esto realmente significa es que Java está tratando de seleccionar algunos de los metadatos de la base de datos y que ésta no existe.
  • Gracias por tu comentario. Cuando esto suceda? Mi código funciona correctamente, pero en nueva envrironment esta se produjo la excepción. ¿Cuál es la solución?
  • Tiene dos ambientes? La obvia la siguiente cosa a hacer sería comprobar (dos veces) que estos ambientes son idénticos en todos los sentidos; especialmente aquellas tablas que se utilizan en el número de línea de su excepción fue lanzada sobre? En lugar de simplemente verter una traza de la pila en Stack Overflow tal vez sería mejor si haces lo que todo el mundo tiene que hacer, proporcionar un mínimo ejemplo que demuestra su problema. Supongo que esto incluiría el DDL así como de Java en esta instancia.
  • También recomiendo la lectura de meta.stackexchange.com/questions/182266/… y meta.stackexchange.com/q/156810.
InformationsquelleAutor Sam | 2013-11-17

3 Kommentare

  1. 6

    He encontrado solución.
    El problema es el usuario que mi aplicación se conecte con la base de datos no tiene subvención al tipo de destino.
    He añadido el subsidio para el usuario y la aplicación funcionaba bien.

    • Yo solo tuve el mismo problema – también he visto «Incoherente de la vista de catálogo» error si se olvida de una concesión demasiado!
  2. 2

    He encontrado otra razón para este problema. Cuando escribo objetos de nombre como inferior el nombre de caso de oracle lanzar la excepción, pero cuando completo en mayúsculas los nombres de objeto problema resuelto

  3. 1

    En mi caso, esto es causado por una auditoría gatillo que comprueba si los valores tienen un valor NULO.

    Si el valor de la expresión SQL es NULL, entonces este error se activa.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea