2012-01-12 36 views
7

Có giới hạn số hàng cho bảng lite sql không? Ứng dụng của tôi đang đưa ra lỗi "không có bảng x như vậy ..." khi bảng đó có hơn 6000 hàng. Dưới 6000 hàng, không đưa ra bất kỳ lỗi nào.Số hàng tối đa trong một bảng sqlite?

Cảm ơn bạn.

Đây là truy vấn.

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() + "%"}); 

Đây là nơi mà tôi tạo ra các bảng

@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(); 

SOLVED !!! Tôi chỉ tìm ra lý do tại sao tôi có vấn đề này. Bởi vì các tệp mà tôi sử dụng với Dữ liệu để tạo và điền vào cơ sở dữ liệu sql, không thể có nhiều hơn 1,2mb. Vì vậy, tôi chia chúng, và không có nhiều vấn đề hơn. Cảm ơn tất cả.

+3

bạn có thể đăng truy vấn của mình không? Giới hạn của các hàng là không thể thực hiện được – Dyonisos

+0

Cập nhật bài đăng bằng mã truy vấn. – filoli

+0

Bạn có thể cung cấp cho chúng tôi thông tin đăng nhập không? – prolink007

Trả lời

6

tối đa số lượng hàng trong một bảng

Số lượng tối đa lý thuyết của các hàng trong một bảng là 2^64 (18446744073709551616 tương đương khoảng 1.8e + 19). Giới hạn này không thể truy cập được vì kích thước cơ sở dữ liệu tối đa là 14 terabyte sẽ đạt được trước. Một cơ sở dữ liệu 14 terabyte có thể chứa không quá khoảng 1e + 13 hàng, và sau đó chỉ khi không có chỉ mục và nếu mỗi hàng có chứa rất ít dữ liệu.

từ đây: http://www.sqlite.org/limits.html

+0

Tôi đã đọc điều đó, hãy tin tôi. Chỉ cần không hiểu tại sao trong mã của tôi, tối đa mà nó đi mà không đưa ra lỗi đó là 6000 hàng. Cảm ơn anyway – filoli

7

Bạn có thể lấy thông tin tiêu chuẩn trên limits of SQLite nhưng đó không phải sẽ là những gì đang gây ra sự cố là giới hạn thực sự là rất cao. (2 đến sức mạnh của 64!)

Nhiều khả năng vấn đề của bạn phải làm với cách ứng dụng của bạn chèn các bản ghi và/hoặc các loại bản ghi được chèn vào.

Bạn có thể đăng một số mã cho ứng dụng và cách mã xử lý chèn không? Tôi có thể sửa lại câu trả lời của mình sau khi đọc qua nó.

Là một tip thêm, hãy chắc chắn bạn đã thiết lập:

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

Vì đây thực sự có thể improve the performance của chèn số lượng lớn lớn hơn của bạn.

+0

Tôi đã cập nhật bài đăng có mã truy vấn. Cảm ơn bạn – filoli

1

Không có giới hạn như vậy, xem dưới đây:

Nó nói:

tối đa số lượng hàng trong một bảng

Số lượng tối đa lý thuyết của các hàng trong một bảng là 264 (18446744073709551616 hoặc khoảng 1,8e + 19). Giới hạn này không thể truy cập được vì kích thước cơ sở dữ liệu tối đa 14 terabyte sẽ đạt được trước tiên. Cơ sở dữ liệu 14 terabyte có thể chứa không quá khoảng 1e + 13 hàng và sau đó chỉ khi không có chỉ mục và nếu mỗi hàng chứa rất ít dữ liệu.

0

Số hàng tối đa là 2^64.

Đây là limitation page.

+0

có, nhưng giới hạn không phải là 6000 hàng. Vì vậy, những gì tôi không hiểu là lý do tại sao các ứng dụng không tạo ra một bảng với hơn 6000 hàng. – filoli

+0

Nhận xét của bạn có vẻ khác với câu hỏi của bạn. Bạn có gặp vấn đề khi bạn đang tạo bảng hay khi quering bảng? Logcat sẽ hữu ích. – prolink007

+0

tôi chỉ cần đặt con mèo đăng nhập. thanks – filoli

Các vấn đề liên quan