2012-01-12 22 views
7

Esiste un limite di righe per una tabella sql lite? La mia app sta dando un errore "nessuna tabella x ..." quando quella tabella ha più di 6000 righe. Sotto le 6000 righe, non dare alcun errore.Numero massimo di righe in una tabella sqlite?

Grazie.

Questa è la query.

db = (new DatabaseHelper(this)).getWritableDatabase(); 

    cursor = db.rawQuery("SELECT continentes._id, continentes.ContinenteID, continentes.Continente" 
      + " FROM continentes" 
      + " WHERE continentes.Continente LIKE ?" 
      + " GROUP BY continentes.ContinenteID, continentes.Continente ORDER BY continentes.Continente", 
       new String[]{"%" + searchText.getText().toString() + "%"}); 

questo è dove ho creare la tabella

@Override 
public void onCreate(SQLiteDatabase db) { 
    String s; 
    try { 
     Toast.makeText(context, "Creating Database", 2000).show(); 
     InputStream in = context.getResources().openRawResource(R.raw.continentes); 
     DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
     Document doc = builder.parse(in, null); 
     NodeList statements = doc.getElementsByTagName("statement"); 
     for (int i=0; i<statements.getLength(); i++) { 
      s = statements.item(i).getChildNodes().item(0).getNodeValue(); 
      db.execSQL(s); 
     } 
    } catch (Throwable t) { 
     Toast.makeText(context, t.toString(), 50000).show(); 

risolto !!! Ho appena scoperto perché ho avuto questo problema. Poiché i file che utilizzo con Data per creare e popolare il database sql, non possono avere più di 1.2mb. Quindi li divido e non ho più problemi. Grazie a tutti.

+3

puoi pubblicare la tua ricerca? Il limite delle righe è pratico irraggiungibile – Dyonisos

+0

Aggiorna il post con il codice della query. – filoli

+0

Puoi fornirci le informazioni logcat? – prolink007

risposta

6

numero massimo di righe in una tabella

Il numero massimo teorico di righe di una tabella è 2^64 (18446744073709551616 o circa 1.8E + 19). Questo limite è irraggiungibile poiché verrà raggiunta prima la dimensione massima del database di 14 terabyte. Un database di 14 terabyte può contenere non più di circa 1e + 13 righe, e solo se non ci sono indici e se ogni riga contiene pochissimi dati.

da qui: http://www.sqlite.org/limits.html

+0

Ho letto che, credimi. Semplicemente non capisco perché nel mio codice, il massimo che passa senza dare quell'errore è di 6000 righe. Grazie comunque – filoli

7

È possibile ottenere le informazioni standard sul limits of SQLite, ma che non sta per essere ciò che sta causando il problema come il limite è in realtà molto elevato. (2 alla potenza di 64!)

Molto probabilmente il tuo problema ha a che fare con il modo in cui la tua applicazione sta inserendo i record e/o i tipi di record inseriti.

È possibile inserire del codice per l'applicazione e il modo in cui gestisce l'inserto? Posso rivedere la mia risposta dopo averla letta.

Come una punta aggiunta, assicurarsi di aver impostato:

Cursor myCursor = db.rawQuery("PRAGMA synchronous=OFF", null); 
myCursor.close(); 

come questo può davvero improve the performance dei tuoi inserimenti di massa più grandi.

+0

Ho aggiornato il post con il codice della query. Grazie – filoli

1

Non esistono limiti, vedi sotto:

Dice:

Numero massimo di righe di una tabella

Il numero massimo teorico di righe di una tabella è 264 (18446744073709551616 o circa 1.8E + 19). Questo limite non è raggiungibile poiché verrà raggiunta prima la dimensione massima del database di 14 terabyte. Un database da 14 terabyte può contenere non più di circa 1e + 13 righe, e solo se non ci sono indici e se ogni riga contiene dati molto piccoli.

0

Il numero massimo di righe è 2^64.

Questo è il numero limitation page.

+0

sì, ma il limite non è di 6000 righe. Quindi, quello che non capisco è il motivo per cui l'app non crea una tabella con più di 6000 righe. – filoli

+0

Il tuo commento sembra diverso dalla tua domanda. Stai riscontrando il problema quando stai generando il tavolo o quando esci dal tavolo? Logcat sarebbe utile. – prolink007

+0

ho appena messo lì il gatto di registro. grazie – filoli

Problemi correlati