-
26 Oct 2012 11:41 AM #151
Problem when building the app
Problem when building the app
I have these following bug when i try to build the app using sencha cmd v3 , any idea?
Code:[ERROR] def was null [ERROR] failed to find meta class definition for name proxy.sqlitestorage [ERROR] BUILD FAILED [ERROR] com.sencha.exceptions.BasicException:
-
26 Oct 2012 1:58 PM #152
Build error
Build error
This proxy has been working superbly in Chrome during development. However, when I come to package it (sencha app build production) I also get a similar error to the one above. Mine's slightly different, so I might as well list it in full:
[ERROR] def was null
[ERROR] failed to find meta class definition for name proxy.sqlitestorage
[ERROR] Exception running app build : JavaException: com.sencha.exceptions.BasicException: null
[ERROR] javax.script.ScriptException: JavaException: com.sencha.exceptions.BasicException: null in <Unknown source> at line number 709
If anyone could point me to where I can find out what on earth any of that means, I'd be very grateful.
-
1 Nov 2012 8:04 AM #153
As I've said before, I can't vouch for this working with ST2.1+, Sencha Cmd 3, or sencha native packaging.
I only have time to maintain for my own current packaging workflows, which are ST2.0 and phonegap 1.8.1.
If other people can work out these issues, please submit a fork on github and I will review and merge.
Otherwise, I will likely be using ST2.1+ and Phonegap 2 to compile my next app around March time.
-
3 Nov 2012 7:55 AM #154
update
update
With reference to the error messages I mentioned above: I packaged the app with Applaud's Phonegap bundle and it works fine on Android.
-
5 Dec 2012 7:08 AM #155
Query???????
Query???????
I have modify model field:
fields: [
{ name: 'id', type: 'int' }, // Every model must start with an id of type int
{name:'SNO', type : 'int', fieldOption : 'PRIMARY KEY ASC'},
{ name: 'name', type: 'string' } // bools, floats, objects and arrays also supported
],
On controller i want to delete record when list tapped I have updated controller :
editPerson: function(list, index, target, record, event) {
store = Ext.getStore('People');
var obj=store.getAt(index);
console.log(record.data.name);
store.remove(obj);
store.sync();
console.log("editPerson Function Called");
},
These work fine only when i run the code for the fitst time but when I again build my app error is occure an no reflection on database...
Error:-
Primary key must be unique.
-
5 Dec 2012 8:01 AM #156
How is your SNO field being set from the DB? The Primary key error should be happening when you are inserting into the DB. The error is occurring when the editperson function is called??? If so you may not be calling sync when you insert the records and the sync isn't being called until this method is run.
I'm guessing when you start out with a blank db you are filling the store with records and manually incrementing the SNO field, then you delete a record which executes the sync() command and actually writes the records to the table. Then when you restart the app, the SNO increment is restarted at 1 and the new records are added to the store (but not synced yet) and then when you call the editPerson function the sync runs which tries to add all the new records which have the same SNO values.
Remove the fieldOption: from your SNO field and see what gets into the DB. (you'll probably see the records have the same values). I'm pretty sure it really has nothing to do with the remove method.
BTW. I'd change the code for the editPerson function. Manually looking up the store and the lookup by index is unnecessary since you already have the record and the list should be backed by the correct store to remove the person from.
editPerson: function(list, index, target, record, event) {
store = list.getStore();
store.remove(record);
store.sync();
},
Bob
-
5 Dec 2012 10:56 PM #157
Thanks for the reply bob..
SNo field is Autoincrement field. Thats so I have added field option with Sno field.
editPerson: function(list, index, target, record, event) {
store = list.getStore();
store.remove(record);
store.sync();
},
These code is fine with table having No Autoincrement field but when i took field Autoincrement(Primary Key with integer type) these code give error of Primary key must be unique.
Not for the first run but when we stop the app and again start error occur and no delete reflect on Database....
-
13 Dec 2012 12:33 PM #158
Did anyone try this configuration:
ST 2.1 + PhoneGap 2.2 + PhoneGap-SQLitePlugin (by chbrody: https://github.com/chbrody/Cordova-SQLitePlugin/) + SQLite Proxy by Shepsii
on Android?
It gives me following log, using weinre (http://people.apache.org/~pmuellr/weinre/docs/latest/):
Given that PhoneGap is available to use after 'deviceready' signal, I've postponed DB init:Code:SQLitePlugin SQLitePlugin.prototype.open DB opened: warsaw-ztm MyApp.utils.Globals#updateDb MyApp.controller.screen.BusStopSelection#onDatabaseReady SQLitePluginTransaction - this.trans_id:1355429776541000 SQLitePluginTransaction.prototype.executeSql success not null:SELECT sql FROM sqlite_master WHERE name=? executeSql - add_to_transactionSELECT sql FROM sqlite_master WHERE name=? SQLitePluginTransaction.prototype.complete SQLitePluginTransaction.queryCompleteCallback executeSql callback:[{"sql":"CREATE TABLE bus_stops_complexes (\n\tcomplex INTEGER NOT NULL, \n\tname VARCHAR NOT NULL, \n\tcity VARCHAR NOT NULL, \n\tPRIMARY KEY (complex)\n)"}] SQLitePluginTransaction.prototype.executeSql success not null:SELECT * FROM bus_stops_complexes LIMIT 1 executeSql - add_to_transactionSELECT * FROM bus_stops_complexes LIMIT 1 SQLitePluginTransaction.prototype.complete SQLitePluginTransaction.queryCompleteCallback executeSql callback:[{"complex":"1001","city":"Warszawa","name":"Kijowska"}] processMessage failed: Message: J SQLitePluginTransaction.queryCompleteCallback('1355429776541000','1355429776553000', [{"complex":"1001","city":"Warszawa","name":"Kijowska"}]); processMessage failed: Error: TypeError: Cannot call method 'getFields' of null processMessage failed: Stack: TypeError: Cannot call method 'getFields' of null at [object Object].getDbFields (file:///android_asset/www/deps/touch/3rd-party/SqliteStorage.js:293:16) at file:///android_asset/www/deps/touch/3rd-party/SqliteStorage.js:228:29 at file:///android_asset/www/deps/touch/3rd-party/SqliteStorage.js:217:10 at Object.callback (file:///android_asset/www/deps/SQLitePlugin.js:167:16) at Function.queryCompleteCallback (file:///android_asset/www/deps/SQLitePlugin.js:82:60) at eval at processMessage (file:///android_asset/www/deps/cordova-2.2.0.js:1062:26) at processMessage (file:///android_asset/www/deps/cordova-2.2.0.js:1062:13) at Function.processMessages (file:///android_asset/www/deps/cordova-2.2.0.js:1123:17) at Object.androidExec [as exec] (file:///android_asset/www/deps/cordova-2.2.0.js:985:21) at [object Object].complete (file:///android_asset/www/deps/SQLitePlugin.js:212:20)
What I'm trying simply to accomplish is populate list view with rows from given table. Any clues?Code:onDatabaseReady: -> console.log Ext.getDisplayName(arguments.callee) busStopsComplexesStore = Ext.getStore 'BusStopsComplexes' if on # shepsii sqlite proxy: busStopsComplexesStore.setProxy type: 'sqlitestorage' dbConfig: tablename: 'bus_stops_complexes' dbConn: dbConn: GetEverywhere.utils.Globals.getDb() reader: type: 'array' else # Sencha built-in sqlite proxy: busStopsComplexesStore.setProxy type: 'ge-sql' table: 'bus_stops_complexes' database: GetEverywhere.utils.Globals.getDb()
EDIT:
I've linked my app against ST2.0 and now it works just fine. Hopefully I won't be using any fancy functionality available from ST2.1 in the future.
-
17 Dec 2012 2:07 AM #159
My tests just showed that the best solution for SQLite within ST2.1 & Phonegap 2.2.0 is to use Phonegap plugin from https://github.com/brodyspark/PhoneGap-sqlitePlugin-iOS and default ST SQL proxy: Ext.data.proxy.SQL with the override:
Code:Ext.define('Ext.data.proxy.SQLOverride', { override: 'Ext.data.proxy.SQL', getDatabaseObject: function() { if(Ext.os.is.Android){ //TODO: add android part } else if (Ext.os.is.iOS && !navigator.platform.toLowerCase().match(/simulator/)) { return sqlitePlugin.openDatabase("data.sqlite"); } return this.callParent(); } });My blog: http://vadimpopa.com
-
17 Dec 2012 8:17 AM #160
Thanks Vadimv. In fact I already tried ST's native SQLite proxy, but without success. Then I turned into Simon's proxy and found it work for me. Maybe someday I will refactor my code to use ST's proxy, because right now I'm mapping table columns to model fields on my own, while ST's does it for you.
Can you please provide us some snippets with real life usage of ST's SQL proxy? The only example I found is:
http://druckit.wordpress.com/2012/11...2-1-sql-proxy/
I've no idea why, but ST2.1 started working in my configuration eventually, which is great, because it speeds up storage load significantly. But please, don't ask me how I did, cause no idea.


Reply With Quote