let say i have a code:
*models/db_wizard_1_bank.py*
db.define_table('bank', 
Field('name'), 
Field('website'), 
format = '%(name)s')

*controllers/install.py*
def index():
if db(db.auth_permission).isempty() and db(db.auth_membership).isempty():
# create index : auth_user
db.executesql('CREATE INDEX idx_auth_user ON auth_user (id, first_name, 
last_name, email, username);')

# insert : bank
db.bank.bulk_insert([
{'name1' : 'bank0', 'website' : 'http://www.bank0.com'}, 
{'name' : 'bank1', 'website' : 'http://www.bank1.com'}, ] )

session.flash = T('Installation Done')
redirect(URL('default', 'index') )

as you can see, i made a mistake during insert to table bank field name1 
(incorrect), should be field name in table bank, but the traceback error 
said is different.

what i got in traceback error :

Traceback (most recent call last):
  File "/Users/MacBookPro/site/web2py/gluon/restricted.py", line 227, in 
restricted
    exec ccode in environment
  File "/Users/MacBookPro/site/web2py/applications/test/controllers/install.py" 
<http://127.0.0.1:8000/admin/default/edit/mutualfunds/controllers/install.py>, 
line 412, in <module>
  File "/Users/MacBookPro/site/web2py/gluon/globals.py", line 417, in <lambda>
    self._caller = lambda f: f()
  File "/Users/MacBookPro/site/web2py/applications/test/controllers/install.py" 
<http://127.0.0.1:8000/admin/default/edit/mutualfunds/controllers/install.py>, 
line 9, in index
    db.executesql('CREATE INDEX idx_auth_user ON auth_user (id, first_name, 
last_name, email, username);')
  File "/Users/MacBookPro/site/web2py/gluon/packages/dal/pydal/base.py", line 
1019, in executesql
    adapter.execute(query)
  File 
"/Users/MacBookPro/site/web2py/gluon/packages/dal/pydal/adapters/base.py", line 
1388, in execute
    return self.log_execute(*a, **b)
  File 
"/Users/MacBookPro/site/web2py/gluon/packages/dal/pydal/adapters/base.py", line 
1382, in log_execute
    ret = self.get_cursor().execute(command, *a[1:], **b)
OperationalError: index idx_auth_user already exists

Error snapshot [image: help] 
<http://127.0.0.1:8000/admin/default/ticket/mutualfunds/127.0.0.1.2016-07-09.07-29-57.44b25bca-2458-4de3-b035-ea50bb8f2522#>

<class 'sqlite3.OperationalError'>(index idx_auth_user already exists)

again, same code with different structure order (insert first then create 
index) in install.py
*controllers/install.py*
def index():
if db(db.auth_permission).isempty() and db(db.auth_membership).isempty():
# insert : bank
db.bank.bulk_insert([
{'name1' : 'bank0', 'website' : 'http://www.bank0.com'}, 
{'name' : 'bank1', 'website' : 'http://www.bank1.com'}, ] )

# create index : auth_user
db.executesql('CREATE INDEX idx_auth_user ON auth_user (id, first_name, 
last_name, email, username);')

session.flash = T('Installation Done')
redirect(URL('default', 'index') )

as you can see, i made a mistake during insert to table bank field name1 
(incorrect), should be field name in table bank, but the traceback error 
said is straight to the point to show where is my mistake.

what i got in traceback error :

Traceback (most recent call last):
  File "/Users/MacBookPro/site/web2py/gluon/restricted.py", line 227, in 
restricted
    exec ccode in environment
  File "/Users/MacBookPro/site/web2py/applications/test/controllers/install.py" 
<http://127.0.0.1:8000/admin/default/edit/mutualfunds/controllers/install.py>, 
line 412, in <module>
  File "/Users/MacBookPro/site/web2py/gluon/globals.py", line 417, in <lambda>
    self._caller = lambda f: f()
  File "/Users/MacBookPro/site/web2py/applications/test/controllers/install.py" 
<http://127.0.0.1:8000/admin/default/edit/mutualfunds/controllers/install.py>, 
line 55, in index
    {'name' : 'bank1', 'website' : 'http://www.bank1.com'}, ] )
  File "/Users/MacBookPro/site/web2py/gluon/packages/dal/pydal/objects.py", 
line 828, in bulk_insert
    listify_items = [self._listify(item) for item in items]
  File "/Users/MacBookPro/site/web2py/gluon/packages/dal/pydal/objects.py", 
line 641, in _listify
    'Field %s does not belong to the table' % name)
SyntaxError: Field name1 does not belong to the table

Error snapshot [image: help] 
<http://127.0.0.1:8000/admin/default/ticket/mutualfunds/127.0.0.1.2016-07-09.07-33-51.9c11b273-0758-4a3f-b258-e4df76325fda#>

<type 'exceptions.SyntaxError'>(Field name1 does not belong to the table)

the solution is either i comment the create index part or change the order 
to get the clear traceback error, my question is it normal?

thanks and best regards,
stifan

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to