ColdFusion - Element SQLSTATE is undefined in CFCATCH

 
Vista:

Element SQLSTATE is undefined in CFCATCH

Publicado por Rogelio Barneta (1 intervención) el 02/02/2017 18:40:56
Hola tengo este problema: Element SQLSTATE is undefined in CFCATCH.

En mi webservice declaro lo siguiente dentro de un cftry

1
2
3
4
5
6
7
8
9
10
11
<cfcatch type="any">
    <cftransaction action="rollback"/>
    <cfinvoke component="biblio" method="customeError" returnvariable="customeError">
        <cfinvokeargument name="cfcatchtype" value="#cfcatch.Type#">
        <cfinvokeargument name="cfcatchmessage" value="#cfcatch.message#">
        <cfinvokeargument name="cfcatchsqlstate" value="#cfcatch.sqlstate#">
        <cfinvokeargument name="errorNum" value="#errorNum#">
    </cfinvoke>
    <cfset reg_error = customeError>
    <cfreturn reg_error>
</cfcatch>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Solución para el error "Element SQLSTATE is undefined in CFCATCH"

Publicado por Alejandro (108 intervenciones) el 14/09/2023 22:46:27
El error "Element SQLSTATE is undefined in CFCATCH" indica que ColdFusion no está reconociendo la propiedad `sqlstate` en el objeto `cfcatch`. La propiedad `sqlstate` generalmente se usa para obtener el código de estado SQL de una excepción, pero no es una propiedad predeterminada de `cfcatch` en ColdFusion.

Para solucionar este problema, puedes hacer lo siguiente:

1. Verificar la versión de ColdFusion: Asegúrate de que estás utilizando una versión de ColdFusion que admita la propiedad `sqlstate` en `cfcatch`. No todas las versiones de ColdFusion tienen esta propiedad, y su disponibilidad puede variar.

2. Utilizar la propiedad "NativeErrorCode": En lugar de `sqlstate`, puedes usar la propiedad `nativeErrorCode` para obtener el código de error de la base de datos en ColdFusion. Esta propiedad debería estar disponible en la mayoría de las versiones de ColdFusion.

Aquí está una modificación en tu código para utilizar `nativeErrorCode` en lugar de `sqlstate`:

1
2
3
4
5
6
7
8
9
10
11
<cfcatch type="any">
    <cftransaction action="rollback"/>
    <cfinvoke component="biblio" method="customeError" returnvariable="customeError">
        <cfinvokeargument name="cfcatchtype" value="#cfcatch.Type#">
        <cfinvokeargument name="cfcatchmessage" value="#cfcatch.message#">
        <cfinvokeargument name="cfcatchsqlstate" value="#cfcatch.nativeErrorCode#">
        <cfinvokeargument name="errorNum" value="#errorNum#">
    </cfinvoke>
    <cfset reg_error = customeError>
    <cfreturn reg_error>
</cfcatch>

Esta modificación debería permitirte obtener el código de error de la base de datos y pasarlo correctamente a tu función `customeError`. Asegúrate de que `nativeErrorCode` sea la propiedad correcta para tu versión específica de ColdFusion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar