¿Cómo puedo obtener información sobre la columna causó restricción de clave externa en android sqlite?
Quiero saber si es posible obtener información sobre SQLiteConstraintException: foreign key constraint
excepción de SQLiteConstraintException: foreign key constraint
.
Necesito saber qué columna causó una violación de restricción de clave externa.
- Cómo implementar herencia de tabla en GreenDao
- RxJava2 en la función de devolución de llamada onLoadFinished de CursorLoader
- Android SQLiteException "no such table" durante la compilación: tabla INSERT INTO
- Base de datos de diccionarios sin conexión para la aplicación de Android
- Uso de archivo personalizado para la base de datos Android sqlite
¿Hay alguna manera de obtener esta información de la excepción?
También puede ser bueno si podría conseguir el nombre de esa restricción.
- Xml vs. sqlite para android y cómo
- Buscar en toda la base de datos SQLite utilizando FTS3 / FTS4?
- ¿Qué tipos de caché realiza SQLite en Android?
- Caracteres especiales de Android Sqlite
- Android: Excepción al actualizar la tabla en la base de datos
- SQLite en el operador en query ()
- Base de datos local Unity SQLite
- Actualizar Recyclerview de otra actividad
Creo que puedes encontrar la respuesta en la siguiente pregunta:
Posible obtener detalles de error específicos de Android SQLiteConstraintException?
Mira la solución 2 publicada por antoino.
No existe una forma directa de encontrar nombre de columna que viole la restricción de clave externa de SQLiteConstraintException: excepción de restricción de clave externa.
Pero usted puede encontrar el nombre de operación (eliminar, insertar, crear etc) que eleva SQLiteConstraintException: excepción de restricción de clave externa.
04-27 11:15:27.152: E/AndroidRuntime(22031): FATAL EXCEPTION: main 04-27 11:15:27.152: E/AndroidRuntime(22031): android.database.sqlite.SQLiteConstraintException: foreign key constraint failed (code 19) 04-27 11:15:27.152: E/AndroidRuntime(22031): at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method) 04-27 11:15:27.152: E/AndroidRuntime(22031): at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:727) 04-27 11:15:27.152: E/AndroidRuntime(22031): at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754) 04-27 11:15:27.152: E/AndroidRuntime(22031): at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64) 04-27 11:15:27.152: E/AndroidRuntime(22031): at android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1494) 04-27 11:15:27.152: E/AndroidRuntime(22031): at it.jackpot21.personalmoney.DbAdapter.SQLdelete(DbAdapter.java:89) 04-27 11:15:27.152: E/AndroidRuntime(22031): at it.jackpot21.personalmoney.PersoneActivity$5.onClick(PersoneActivity.java:215)
En el registro anterior
04-27 11: 15: 27.152: E / AndroidRuntime (22031): en android.database.sqlite.SQLiteDatabase.delete (SQLiteDatabase.java:1494)
Esto nos dice eliminar excepción de operación. A continuación, puede encontrar qué línea en su código genera esta excepción y compruebe su consulta y columna manualmente.
Las versiones SQLite más nuevas agregan los nombres de las tablas al mensaje de error, pero en ninguno de los dos casos se obtienen los nombres de las columnas.
Usted puede copiar su sql a sqlite navegador, http://sqlitebrowser.org/ e intentar replicar el error allí y debe darle más información.
- Problema Programatically Adición de Word para la predicción de Word
- Cómo reconocer la compilación específica de apk, incluso si la actualización de usuario apk en Google Play