Nolan Lawson created CB-2639:
--------------------------------

             Summary: SQLite error: 23 "not authorized" on Android
                 Key: CB-2639
                 URL: https://issues.apache.org/jira/browse/CB-2639
             Project: Apache Cordova
          Issue Type: Bug
          Components: Android
    Affects Versions: 2.2.0
         Environment: Several Android devices, apparently pre-4.1.  See details 
below.
            Reporter: Nolan Lawson
            Assignee: Joe Bowser


(Moved from a comment I mistakenly added to CB-592.)

I am unable to insert/update to the SQLite database using the standard 
{{window.openDatabase()}} approach described in the [Storage 
docs|http://docs.phonegap.com/en/1.2.0/phonegap_storage_storage.md.html].  The 
transaction fails with the error "23: not authorized".

I'm using PhoneGap Build and PhoneGap v.2.2.0.

All I do is create a database:

{code:JavaScript}
var db = window.openDatabase('myDatabase', '1.0', "My Database", 1000000);
{code}

Then I call a simple chain of two queries on it:

{code:JavaScript}

function query(tx) {
    tx.executeSql('select 1 from sqlite_master');
}

function onError() {
    ....
}

function onSuccess() {
    db.transaction(query2, onError2, onSuccess2);
}

function query2(tx) {
    tx.executeSql('create table mytable(mycolumn text)');
}

function onError2() {
    ....
}

function onSuccess2() {
    ....
}

db.transaction(query, onError, onSuccess);
{code}

The table below shows the Android devices that I tested this on, and the 
failure I got in each.

||Device||Android||Working?||Result||Logcat|| SQLError object||
|Galaxy Nexus|4.1.1|{color:green}Yes{color}|Logs an error, but still works.| 
{{SQLiteLog  E  (23) not authorized}}||
|Nexus One|2.3.7|{color:red}No{color}|Calls the {{onError2}} message 
above.|{{Database  I  sqlite returned: error code = 23, msg = not 
authorized}}|{code:JavaScript} {"message":"not authorized","code":1} {code}|
|HTC Magic|2.1-update1|{color:red}No{color}|Calls the {{onError2}} message 
above.|None|{code:JavaScript} {"code":1,"message":"not authorized"} {code}|
|Galaxy Tab 8.9|4.0.4|{color:red}No{color}|Calls the {{onError2}} message 
above.|{{SqliteDatabaseCpp  I  sqlite returned: error code = 23, msg = not 
authorized, db=xxx}}|{code:JavaScript} {"code":5,"message":"not authorized"} 
{code}|
|Samsung GT-I9001|2.3.6|{color:red}No{color}|Calls the {{onError2}} message 
above.|None|{code:JavaScript} {"message":"not authorized","code":1} {code}|

I've also tested on an iPod Touch (5th generation) with no issues.

Based on the comments in CB-592, it seems like the problem is caused by 
Android's native Web SQL Database implementation.  Apparently they've supported 
it going back to 2.1 ([link|http://caniuse.com/sql-storage]), and the [Cordova 
docs|http://docs.phonegap.com/en/1.2.0/phonegap_storage_storage.md.html] say 
they defer to the native interface if it's available, meaning that it has 
nothing to do with Cordova's implementation.

I'm really hoping there's a workaround for this, since otherwise I'm unable to 
use SQLite on Android using Cordova.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to