21 nov 2011

ORA-00980 synonym translation is no longer valid

Este error se produce debido a una de estas dos causas:
  • El objeto que hace referencia el sinonimo ya no existe
  • El usuario no tiene permisos sobre el objeto al que hace referencia el sinonimo
Sin embargo, en nuestro caso hubo una tercera opción. Bueno, realmente está incluida en las dos anteriores, pero no dábamos con la tecla. En resumen fue:
    • Mira bien los esquemas con los que estas creando el sinonimo y el esquema al que apunta el objeto, no sea que como nosotros, te equivoques y pongas un esquema que no es, y por casualidad exista el objeto, y el usuario que crea el sinonimo no tenga permisos sobre el mismo
    La verdad que es el típico error tonto de estos, que no lo ves y no lo ves, por que te ciegas en algo que das por sentado que está bien, y al final está mal.

    13 jul 2011

    Exception in thread "main" java.lang.NoClassDefFoundError: ûjar

    Este error es común y bastante desconcertante, puesto que a priori todo es correcto. Sin embargo llama la atención "ûjar" ¿de donde viene la û?. Se debe a una mala jugada del "copypaste" sobre todo si se ha hecho de texto con formato, como puede ser copiarlo de un Word, o de un mail de Outlook.

    Si probamos en MS Office Word y escribimos (teclearlo por favor, no copiar) "java -jar miclase.jar" al pulsar ESPACIO justo después de "-jar" podemos ver como nos cambia automáticamente el guión corto, por el largo, que es otro carácter diferente aunque en la ventana de la consola se vean igual. Este guión largo es el que provoca el problema. El que copie el texto y lo use en la consola obtendrá el error.

    Para que no se produzca el error basta con teclear a mano el comando deseado.

    Con carácter largo:
    java -jar miclase.jar



    carácter corto:
    java -jar miclase.jar



    (Aquí da otro error por no existir el jar, evidentemente no existe, pero ya no da el error misterioso "ûjar")

    19 may 2011

    The query results cannot be enumerated more than once

    Este error se debe justamente a lo que indica, es decir, "los resultados de la consulta no pueden enumerarse mas de una vez". Afortunadamente la solución es simple, basta con convertirlos a lista añadiéndole un ".toList()" al final. Es indiferente a ejecutar una query o un procedimiento almacenado.

    Ejemplo que provoca el error:
    var resultados = bdDataContext.EjecutarProcedimientoAlmacenado(Parametros);
    foreach(EjecutarProcedimientoAlmacenadoReuslts resultado in resultados)
    {
          Procesar(resultado);
    }
    

    Ejemplo correcto:
    var resultados = bdDataContext.EjecutarProcedimientoAlmacenado(Parametros).toList();
    foreach(EjecutarProcedimientoAlmacenadoReuslts resultado in resultados)
    {
          Procesar(resultado);
    }