programing

android_metadata와 같은 테이블이 없습니다. 문제가 무엇입니까?

minecode 2021. 1. 17. 10:48
반응형

android_metadata와 같은 테이블이 없습니다. 문제가 무엇입니까?


기존 데이터베이스를 using-your-own-sqlite-database-in-android-applications에서/data/data/packagename/databases 배운 코드 사용하여 복사하고 있습니다.

복사 후 데이터베이스를 열 때 다음과 같은 로그 메시지가 나타납니다.

android_metadata 테이블이 없습니다.

android_metadata라는 테이블을 만들어야합니까? 이 데이터베이스 테이블에 삽입해야하는 값은 무엇입니까?

매우 감사합니다


실제로 조금 더 읽어 보면 SQLiteDatabase.NO_LOCALIZED_COLLATORS전화 할 때 플래그 를 사용해야한다는 것을 발견했습니다 SQLiteDatabase.openDatabase(). 더 이상 문제가 발생하지 않습니다.


사용하다

SQLiteDatabase.openDatabase(dbPath, null,SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.CREATE_IF_NECESSARY);

또는

SQLiteDatabase.openDatabase(dbPath, null,SQLiteDatabase.OPEN_READWRITE);

어떤 이유로 android는 적어도 하나의 로케일을 포함하는 android_metadata라는 테이블을 모든 데이터베이스에 요구하는 것 같습니다. reigndesign 당신이 언급 한 블로그는 어떻게 테이블을 생성하고 로케일을 미리 기입하는 방법을 알려줍니다.

데이터베이스에이 테이블이 있는지, 테이블에 내용이 있는지 확인하십시오.


예를 들어 자산 디렉토리에서 데이터베이스를 복사 할 때 이미 android_metadata 테이블이 생성되어 있어야합니다. 이 테이블에는 두 개의 열이 있어야합니다.

_id = an integer value
locale = en

나는 이미 그 링크에 주어진대로 오랫동안 사용하고 있습니다 ..

그것은 작동합니다 .. 테이블이 생성되었는지 여부를 다시 DB를 체크 아웃?

동일한 링크에 언급 된대로 모든 프로세스를 완료 한 후 sqlite 데이터베이스 작업을 위해 파이어 폭스에 SQLite Manager 플러그인을 설치하는 것을 선호합니다 ..

Checkout http://www.devx.com/wireless/Article/40842/1954 .

여기에는 모든 데이터베이스 작업이 포함됩니다.


파일 권한 일 수도 있습니다. 오류 메시지는 잘못된 것입니다. 먼저 앱의 사용자 ID를 찾아야합니다 (루트 액세스 권한이 있다고 가정).

$ adb shell grep <packagename> /data/system/packages.xml

출력은 다음과 같아야합니다.

<package name="com.fsck.k9" codePath="/data/app/com.fsck.k9-1.apk" 
nativeLibraryPath="/data/data/com.fsck.k9/lib" 
flags="0" ft="1306ecac340" it="1306ecac9d2" ut="1306ecac9d2"
version="14001" userId="10002">

여기서 userId는 10002입니다.

그런 다음 권한을 수정하십시오.

$ adb shell chown -R 10002:10002 /data/data/<packagename>

제 경우에는 open transaction왼쪽을 떠나면이 오류가 발생한다는 것을 발견했습니다 .

즉 : 당신이 잊어 버린 경우 commit또는 rollback당신이 당신의 응용 프로그램에 입력 한 다음에 트랜잭션이 오류가 최대 발생합니다.

참조 URL : https://stackoverflow.com/questions/2528489/no-such-table-android-metadata-whats-the-problem

반응형