[
https://issues.apache.org/jira/browse/CB-2639?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Joe Bowser updated CB-2639:
---------------------------
Description:
(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.
was:
(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.
> 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