Erro ao criar chave estrangeira em SQlite

Illuminae

Estou tentando criar as tabelas a seguir e não consigo descobrir por que recebo esse erro

04-10 22:30:15.373 32592-32592/com.bluetask E/SQLiteLog: (1) unknown column "rem_id" in foreign key definition

Como pode ser visto no código, crio as tabelas na ordem correta.
Eu crio as colunas antes de adicionar a restrição de chave estrangeira.

Eu apreciaria qualquer dica que você possa ter.

public static final String DATABASE_NAME = "bluetask.db";
private static final int DATABASE_VERSION = 2;

public static final String TABLE_REMINDERS = "reminders";
public static final String TABLE_REMINDERPOSITIONS = "rem_pos";
public static final String TABLE_POSITIONS = "positions";
public static final String REMINDERS_COLUMN_REM_ID = "rem_id";
public static final String REMINDERS_COLUMN_DATE = "date";
public static final String REMINDERS_COLUMN_NAME = "name";
public static final String REMINDERS_COLUMN_DESCR = "description";
public static final String REMINDERS_COLUMN_DONE = "done";
public static final String REMINDERPOSITIONS_COLUMN_REM_ID = "rem_id";
public static final String REMINDERPOSITIONS_COLUMN_POS_ID = "pos_id";
public static final String POSITIONS_COLUMN_POS_ID = "pos_id";
public static final String POSITIONS_COLUMN_POS_TITLE = "pos_title";
public static final String POSITIONS_COLUMN_STREET = "street";
public static final String POSITIONS_COLUMN_STR_NUM = "str_num";
public static final String POSITIONS_COLUMN_ZIP = "zip";
public static final String POSITIONS_COLUMN_CITY = "city";
public static final String POSITIONS_COLUMN_GEO_DATA = "geo_data";

private static final String CREATE_TABLE_REMINDERS =
        "CREATE TABLE " + TABLE_REMINDERS + "("
            + REMINDERS_COLUMN_REM_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + REMINDERS_COLUMN_NAME + " TEXT NOT NULL, "
            + REMINDERS_COLUMN_DESCR + " TEXT NOT NULL, "
            + REMINDERS_COLUMN_DATE + " INTEGER NOT NULL, "
            + REMINDERS_COLUMN_DONE + " INTEGER NOT NULL"
            + ");";
private static final String CREATE_TABLE_POSITIONS =
        "CREATE TABLE " + TABLE_POSITIONS + "("
            + POSITIONS_COLUMN_POS_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + POSITIONS_COLUMN_POS_TITLE + " TEXT NOT NULL, "
            + POSITIONS_COLUMN_CITY + " TEXT, "
            + POSITIONS_COLUMN_ZIP + "INTEGER, "
            + POSITIONS_COLUMN_STREET + " TEXT, "
            + POSITIONS_COLUMN_STR_NUM + " TEXT, "
            + POSITIONS_COLUMN_GEO_DATA + " TEXT NOT NULL"
            + ");";
private static final String CREATE_TABLE_REMINDERPOSITIONS =
        "CREATE TABLE " + TABLE_REMINDERPOSITIONS + "("
            + REMINDERPOSITIONS_COLUMN_REM_ID + "INTEGER, "
            + REMINDERPOSITIONS_COLUMN_POS_ID + "INTEGER, "
            + "FOREIGN KEY (" + REMINDERPOSITIONS_COLUMN_REM_ID + ") REFERENCES " + TABLE_REMINDERS + "(" + REMINDERS_COLUMN_REM_ID + "), "
            + "FOREIGN KEY (" + REMINDERPOSITIONS_COLUMN_POS_ID + ") REFERENCES " + TABLE_POSITIONS + "(" + POSITIONS_COLUMN_POS_ID + "), "
            + "PRIMARY KEY (" + REMINDERPOSITIONS_COLUMN_REM_ID + ", " + REMINDERPOSITIONS_COLUMN_POS_ID + ")"
            + ");";

public BlueTaskSQLiteOpenHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase database){
    database.execSQL(CREATE_TABLE_REMINDERS);
    database.execSQL(CREATE_TABLE_POSITIONS);
    database.execSQL(CREATE_TABLE_REMINDERPOSITIONS);
}

E este é o logcat out:

04-10 22:30:15.373 32592-32592/com.bluetask E/SQLiteLog: (1) unknown column "rem_id" in foreign key definition
04-10 22:30:15.392 32592-32592/com.bluetask D/AndroidRuntime: Shutting down VM
04-10 22:30:15.393 32592-32592/com.bluetask E/AndroidRuntime: FATAL EXCEPTION: main
                                                          Process: com.bluetask, PID: 32592
                                                          java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bluetask/com.bluetask.AddReminderActivity}: android.database.sqlite.SQLiteException: unknown column "rem_id" in foreign key definition (code 1): , while compiling: CREATE TABLE rem_pos(rem_idINTEGER, pos_idINTEGER, FOREIGN KEY (rem_id) REFERENCES reminders(rem_id), FOREIGN KEY (pos_id) REFERENCES positions(pos_id), PRIMARY KEY (rem_id, pos_id));
                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                              at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                              at android.os.Handler.dispatchMessage(Handler.java:102)
                                                              at android.os.Looper.loop(Looper.java:148)
                                                              at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                              at java.lang.reflect.Method.invoke(Native Method)
                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                           Caused by: android.database.sqlite.SQLiteException: unknown column "rem_id" in foreign key definition (code 1): , while compiling: CREATE TABLE rem_pos(rem_idINTEGER, pos_idINTEGER, FOREIGN KEY (rem_id) REFERENCES reminders(rem_id), FOREIGN KEY (pos_id) REFERENCES positions(pos_id), PRIMARY KEY (rem_id, pos_id));
                                                              at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                                                              at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887)
                                                              at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498)
                                                              at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
                                                              at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
                                                              at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
                                                              at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1674)
                                                              at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1605)
                                                              at com.bluetask.database.BlueTaskSQLiteOpenHelper.onCreate(BlueTaskSQLiteOpenHelper.java:70)
                                                              at com.bluetask.database.BlueTaskSQLiteOpenHelper.onUpgrade(BlueTaskSQLiteOpenHelper.java:79)
                                                              at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:256)
                                                              at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
                                                              at com.bluetask.database.BlueTaskDataSource.open(BlueTaskDataSource.java:28)
                                                              at com.bluetask.AddReminderActivity.onCreate(AddReminderActivity.java:34)
                                                              at android.app.Activity.performCreate(Activity.java:6251)
                                                              at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                              at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                              at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                              at android.os.Looper.loop(Looper.java:148) 
                                                              at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                              at java.lang.reflect.Method.invoke(Native Method) 
                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Phantômaxx

Esta tabela não foi criada corretamente, pois faltam alguns espaços entre os nomes das colunas e seus tipos de dados:

private static final String CREATE_TABLE_REMINDERPOSITIONS =
        "CREATE TABLE " + TABLE_REMINDERPOSITIONS + "("
            + REMINDERPOSITIONS_COLUMN_REM_ID + "INTEGER, "
            + REMINDERPOSITIONS_COLUMN_POS_ID + "INTEGER, "
            + "FOREIGN KEY (" + REMINDERPOSITIONS_COLUMN_REM_ID + ") REFERENCES " + TABLE_REMINDERS + "(" + REMINDERS_COLUMN_REM_ID + "), "
            + "FOREIGN KEY (" + REMINDERPOSITIONS_COLUMN_POS_ID + ") REFERENCES " + TABLE_POSITIONS + "(" + POSITIONS_COLUMN_POS_ID + "), "
            + "PRIMARY KEY (" + REMINDERPOSITIONS_COLUMN_REM_ID + ", " + REMINDERPOSITIONS_COLUMN_POS_ID + ")"
            + ");";

Deveria estar:

private static final String CREATE_TABLE_REMINDERPOSITIONS =
        "CREATE TABLE " + TABLE_REMINDERPOSITIONS + "("
            + REMINDERPOSITIONS_COLUMN_REM_ID + " INTEGER, "
            + REMINDERPOSITIONS_COLUMN_POS_ID + " INTEGER, "
            + "FOREIGN KEY (" + REMINDERPOSITIONS_COLUMN_REM_ID + ") REFERENCES " + TABLE_REMINDERS + "(" + REMINDERS_COLUMN_REM_ID + "), "
            + "FOREIGN KEY (" + REMINDERPOSITIONS_COLUMN_POS_ID + ") REFERENCES " + TABLE_POSITIONS + "(" + POSITIONS_COLUMN_POS_ID + "), "
            + "PRIMARY KEY (" + REMINDERPOSITIONS_COLUMN_REM_ID + ", " + REMINDERPOSITIONS_COLUMN_POS_ID + ")"
            + ");";

Mude isso, desinstale seu aplicativo e execute-o novamente.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Erro ao criar chave estrangeira em uma tabela no PostgreSQL 11.0

Erro de incompatibilidade de chave estrangeira em sqlite ao tentar usar rowid como chave estrangeira

Erro ao criar uma chave estrangeira em views.py no Django

PHPMyAdmin Mysql Erro ao criar chave estrangeira em <attribute> (verifique os tipos de dados)

Sqlalchemy Erro de relacionamento de chave estrangeira ao criar tabelas

Eu tive um erro ao criar uma chave estrangeira no laravel

Erro ao tentar criar chave estrangeira para tabela no SQL?

mySQL: Erro ao tentar criar uma chave estrangeira

Erro 1215 do MySQL ao criar chave estrangeira

Erro (1005) ao tentar criar uma chave estrangeira

Erro ao criar tabela mysql com chave estrangeira

Erro de mapeamento em SQLAlchemy ao usar uma chave estrangeira

Não é possível criar uma relação no mysql - Erro ao criar chave estrangeira em id_produk (verifique os tipos de dados)

Por que o sql está me mostrando um erro ao criar uma chave estrangeira?

Erro ao criar chave estrangeira no userid, followerid (verificar tipos de dados)

Erro de chave estrangeira ao tentar criar um novo registro no Django

erro de restrição MySQL 5.6 ao criar duas tabelas com uma chave estrangeira

Obtendo o erro 1822 no MySQL ao tentar criar uma chave estrangeira

Recebi o erro # 1064 ao criar uma tabela de banco de dados com chave estrangeira

Podemos criar em cascata ao excluir ao sair da chave estrangeira

erro ao migrar com chave estrangeira no laravel

Erro ao definir chave estrangeira no SQL Server

Erro de sintaxe SQL 1064 ao tentar criar uma restrição de chave estrangeira em uma consulta de criação de tabela

Incompatibilidade de chave estrangeira ao inserir (SQLite)

Criar tabelas em SQL com chave estrangeira

Não foi possível criar tabela com chave estrangeira em sqlite

Como faço para criar uma chave estrangeira em sqlite3 python

Diminuindo um valor em um modelo de chave estrangeira (ao criar ou atualizar instâncias)

Erro ao inserir a instrução em conflito com a restrição de chave estrangeira

TOP lista

  1. 1

    Obtendo apenas o número de uma String C #

  2. 2

    como acessar a conexão do banco de dados em visualizações no codeigniter 4

  3. 3

    Como redimensionar tabelas geradas pelo Stargazer no R Markdown?

  4. 4

    recuperar valores em uma linha de dataframes com base no valor em outro

  5. 5

    Firebase Storage Web: como fazer upload de um arquivo

  6. 6

    为什么在使用argc和argv时不会出现分段错误?

  7. 7

    Como agrupar objetos em uma lista em outras listas por atributo usando streams e Java 8?

  8. 8

    Qual é a diferença entre o tamanho do passo e a taxa de aprendizado no aprendizado de máquina?

  9. 9

    Por que definir a variável como uma string vazia não é necessária em meu código?

  10. 10

    Insert a value to hidden input Laravel Blade

  11. 11

    Configure o coletor de arquivos Serilog para usar um arquivo de log por execução do aplicativo

  12. 12

    Como ler arquivos yaml em laravel?

  13. 13

    Série Fibonacci usando programação dinâmica

  14. 14

    Como adicionar elementos a um array multidimensional em PHP?

  15. 15

    How do I set an IronPython ctypes c_char_p pointer to an absolute address that is not a valid memory address to read from?

  16. 16

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  17. 17

    Como faço para que um formulário no Access se torne uma janela pop-up?

  18. 18

    Como anexar um arquivo a um e-mail usando JavaMail

  19. 19

    Adicionar campos de texto dinâmicos por meio da seleção suspensa de componentes?

  20. 20

    如何使用SOM算法进行分类预测

  21. 21

    TypeError não capturado: não é possível atribuir a propriedade somente leitura

quentelabel

Arquivo