Problema com inserção de dados sqlite esp32

Olá, estou com um problema que esta a tirar o meu sono e não estou conseguindo solucionar.
Estou desenvolvendo um sistema de injecao e preciso armazenar o mapa de injecao no meu sqlite. Esses dados vem do bluetooth em json e até ai tudo esta funcionando perfeitamente.
O problema e quando estou inserindo esses dados no sqlite.

Estou executando um for para inserir todos os dados na memoria do proprio esp via SPIFFS.
quando eu executo o seguinte laço de repetição

  if (verificaFuncao == 2) {
    for (int i = 0; i < 24; i++) {
      String iS = String(i);
      for (int ii = 0; ii < 5; ii++) {
        String iiS = String(ii);
        String s_Command = "INSERT INTO tbl_mapaInjecao_sub VALUES  (NULL,'" + iS + "' ,'" + iiS + "','3.0');";
        const char *c_Command = s_Command.c_str();
        rc = db_exec(db1, c_Command);
        if (rc != SQLITE_OK) {
          sqlite3_close(db1);
          return;
        }
        Serial.println(teste);
        Serial.println(ESP.getFreeHeap());
      }
    }
  }

Ele insere todos o dados corretamente e tudo funciona normalmente. tenho uma segunda funcao que utilizo para dar update nessa tabela quando necessário.

    String posXS = doc["posX"];
    String posYS = doc["posY"];
    String valorAtualizaS = doc["valorAtualiza"];
    mapaInjecao[posX][posY][0] = valorAtualiza;
    Serial.println(mapaInjecao[posX][posY][0]);

    String s_Commandd = "UPDATE tbl_mapaInjecao_sub SET value = '" + valorAtualizaS + "' WHERE posX = '" + posXS + "' AND posY='" + posYS + "'";
    const char *c_Commandd = s_Commandd.c_str();
    rc = db_exec(db1, c_Commandd);
    Serial.println(teste);
    if (rc != SQLITE_OK) {
      sqlite3_close(db1);
      return;
    }

E tudo funciona normalmente más até um limite de 120 dados. Acima disso não consigo mais inserir nada.
e quando rodo o mesmo codigo no laço for com 25 no i e 15 no ii, o mesmo diz que inseriu os dados, más ao dar o UPDATE ele me retorna o seguinte erro.

20:36:56.336 -> UPDATE tbl_mapaInjecao_sub SET value = '3.8' WHERE posX = '2' AND posY='2'
20:36:56.496 -> SQL error: disk I/O error

Não sei o que esta acontecendo até porque quando consulto o tamanho do arquivo ele me retorna ( 20:33:37.339 -> FILE: /test1.db SIZE: 4096 ) poxa 4kb não é nada para a memória do ESP isso com 120 registros... Vou ter aproximadamente 400 registros... Se resultar em 20kb ainda nao será nada para o ESP. Não sei aonde estou errando, alguem poderia me dar uma luz?

Utilizo este comando para criar a tabela.

  rc = db_exec(db1, "CREATE TABLE IF NOT EXISTS tbl_mapaInjecao_sub (id INTEGER PRIMARY KEY, posX INT, posY INT, value FLOAT);");
  if (rc != SQLITE_OK) {
    sqlite3_close(db1);
    return;
  }

Obrigado!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.