SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

SQLiteReadOnlyDatabaseException:cố gắng viết cơ sở dữ liệu chỉ đọc (mã 1032)

Tôi bị mắc kẹt với ít nhiều vấn đề giống hệt nhau và tôi đã tìm thấy một khiếm khuyết mở về vấn đề có ý nghĩa ...

https://code.google.com/p/android/issues/detail?id=174566

Cách giải quyết của tôi - mặc dù không phải là giải pháp tốt nhất - là không bao giờ sửa đổi cơ sở dữ liệu và tự theo dõi điều này, do đó không bao giờ gọi onUpgrade() và thực hiện nâng cấp theo cách thủ công khi cập nhật ứng dụng.

Ngoài ra, nếu bạn có một DB nhỏ chỉ được đọc, bạn có thể kích hoạt bản sao của db trong nội dung trên mọi onCreate() trong DBHelper nhưng điều này có thể gây ra các sự cố không mong muốn nếu hệ thống tệp đã đầy, vì vậy chỉ thực hiện việc này trong khi tìm kiếm giải pháp tốt hơn.

@Override
public void onCreate(SQLiteDatabase db) {
    // Workaround for Issue 174566
    myContext.deleteDatabase(DB_NAME);
    try {
        copyDataBase();
    }
    catch(IOException e) {
        System.out.println("IOException " + e.getLocalizedMessage());
    }
}

Ứng dụng của tôi hiện nâng cấp đúng như bình thường với cách giải quyết của tôi và bằng cách đánh giá khoảng thời gian kể từ khi lỗi này được phát sinh ban đầu, nó có thể không bao giờ được sửa ...

Tôi rất tiếc, đây không phải là một giải pháp đầy đủ cho vấn đề, nhưng ít nhất đó là một chặng đường phía trước.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PowerManager.PARTIAL_WAKE_LOCK android

  2. Hiển thị dữ liệu từ cơ sở dữ liệu bằng cách sử dụng bộ điều hợp cơ sở và chế độ xem danh sách

  3. Dấu chấm phẩy có cần thiết trong SQL không?

  4. Cập nhật dữ liệu Hoạt động từ dịch vụ khi dịch vụ bị tạm dừng

  5. Tôi có thể mở cơ sở dữ liệu đọc một mình từ thư mục res / asset trong android mà không cần sao chép vào thư mục cơ sở dữ liệu không