Massimo- steps to reproduce (using rocket/mysql/OSX):

1) In db.py pointing to MySQL:

db.define_table('bad',
Field('field_a', 'string'),
Field('long', 'string')
)

2) Make a request. 

The app will error out and SQL syntax error will be ticketed.

3) Make another request. 

App requests now hang. Other apps are semi-hung (it's strange- i could open 
example app, but not others). App admin still works (?). The web2py process 
cannot be terminated and must be killed.

(I brush up against this whenever I do something MySQL doesn't like- 
altering two tables at once in db.py, etc...)

On Tuesday, August 7, 2012 5:42:30 PM UTC-4, Massimo Di Pierro wrote:
>
> can you reproduce. If this is a web2py problem, it needs to be fixed. 
>
> On Tuesday, 7 August 2012 10:41:27 UTC-5, Yarin wrote:
>>
>> Think it actually does return a non-specific SQL syntax error that gets 
>> ticketed by web2py- but web2py never goes to an error screen and the 
>> browser just hangs- if i recall..
>>
>> On Tuesday, August 7, 2012 11:30:37 AM UTC-4, Massimo Di Pierro wrote:
>>>
>>> Damn MySQL. It should not hang, it should return a operationalerror.
>>>
>>>
>>>
>>> On Tuesday, 7 August 2012 10:03:44 UTC-5, Yarin wrote:
>>>>
>>>> Change the name of in your Field('long') field in maps table - it's a 
>>>> reserved keyword in MySQL and will cause it to hang.
>>>>
>>>> On Tuesday, August 7, 2012 10:57:07 AM UTC-4, Aurelijus Useckas wrote:
>>>>>
>>>>> Here it is:
>>>>>
>>>>> db.define_table('tag',
>>>>>     Field('tag', notnull=True, unique=True),
>>>>>     format='%(tag)s')
>>>>>
>>>>> db.define_table('city',
>>>>>     Field('name', notnull=True, unique=True),
>>>>>     format='%(name)s')
>>>>>     
>>>>> db.define_table('maps',
>>>>>     Field('name'),
>>>>>     Field('last_name'),
>>>>>     Field('long'),
>>>>>     Field('lat'))
>>>>>     
>>>>>         
>>>>> db.define_table('asoc',
>>>>>     Field('name', label='Pavadinimas', unique=True),
>>>>>     Field('City', 'list:reference city', label='Miestas'),
>>>>>     Field('address', label='Adresas'),
>>>>>     Field('www'),
>>>>>     Field('tel'),
>>>>>     Field('fax'),
>>>>>     Field('email'),
>>>>>     Field('President', label='Asociacijos prezidentas'),
>>>>>     Field('CEO', label='Asociacijos generalinis'),
>>>>>     Field('CEO_tel', label='Generalinio tel.'),
>>>>>     Field('CEO_email', label='Generalinio email'),
>>>>>     Field('CEO_mob', label='Generalinio mobilus'),
>>>>>     Field('Pres_tel', label='Prezidento tel.'),
>>>>>     Field('Pres_email', label='Prezidento email'),
>>>>>     Field('Pres_mob', label='Prezidento mobilus'),
>>>>>     Field('submited_at', 'datetime', default=request.now, 
>>>>> writable=False, readable=False),
>>>>>     Field('updated_at', 'datetime', default=request.now, 
>>>>> update=request.now, writable=False, readable=False),
>>>>>     Field('submited_by', db.auth_user, default=auth.user_id, 
>>>>> writable=False, readable=False),
>>>>>     Field('updated_by', db.auth_user, update=auth.user_id, 
>>>>> writable=False, readable=False),
>>>>>     format='%(name)s')
>>>>>
>>>>> db.asoc.email.requires=IS_EMPTY_OR(IS_EMAIL())
>>>>> db.asoc.CEO_email.requires=IS_EMPTY_OR(IS_EMAIL())
>>>>> db.asoc.Pres_email.requires=IS_EMPTY_OR(IS_EMAIL())
>>>>> db.asoc.name.requires=IS_NOT_EMPTY()
>>>>>
>>>>> db.define_table('countries',
>>>>>     Field('Country', notnull=True, unique=True),
>>>>>     Field('latitude', readable=True, writable=False),
>>>>>     Field('longitude', readable=True, writable=False),
>>>>>     format = '%(Country)s'
>>>>>     )
>>>>>
>>>>> def horizontal_checkboxes(f,v):
>>>>>     horizontal_widget = SQLFORM.widgets.checkboxes.widget(f,v,cols=4)
>>>>>     return locals()
>>>>>            
>>>>> db.define_table('company',
>>>>>     Field('title', label='Pavadinimas', unique=True),
>>>>>     Field('CEO', label='Generalinis dir.'),
>>>>>     Field('code', 'integer', label='Įmonės kodas',unique=True, 
>>>>> default=None),
>>>>>     Field('revenue', 'integer', label='Metinė apyvarta (mln.)'),
>>>>>     Field('workers', 'integer', label='Darbuotojų skaičius'),
>>>>>     # Field('logo', 'upload', label='Įmonės logo'),
>>>>>     Field('produce_tag', 'list:reference tag', label='Produkcija', 
>>>>> default=None),
>>>>>     Field('produce', label='Produkcija (smulkiau)'),
>>>>>     Field('Email', default=None, notnull=False),
>>>>>     Field('Tel'),
>>>>>     Field('Fax'),
>>>>>     Field('www'),
>>>>>     Field('City', 'list:reference city', label='Miestas'),
>>>>>     Field('address', label='Adresas'),
>>>>>     Field('extra_contacts', 'boolean', label='Pridėti kontakt. 
>>>>> duomenų'),
>>>>>     Field('extra_contacts_2', 'boolean', label='Pridėti kontakt. 
>>>>> duomenų'),
>>>>>     Field('name_1', label='Vardas'),
>>>>>     Field('pareigos_1', label='Pareigos'),
>>>>>     Field('tel_1', label='Papildomas tel.'),
>>>>>     Field('email_1', label='Papildomas el. paštas'),
>>>>>     Field('name_2', label='Vardas'),
>>>>>     Field('pareigos_2', label='Pareigos'),
>>>>>     Field('tel_2', label='Papildomas tel.'),
>>>>>     Field('email_2', label='Papildomas el. paštas'),
>>>>>     Field('Association',  db.asoc, label='Priklauso asociacijai'),
>>>>>     Field('other', 'text', label='Papildoma info'),
>>>>>     Field('submited_at', 'datetime', default=request.now, 
>>>>> writable=False, readable=False),
>>>>>     Field('submited_by', db.auth_user, default=auth.user_id, 
>>>>> writable=False, readable=False),
>>>>>     Field('updated_at', 'datetime', update=request.now, 
>>>>> writable=False, readable=False),
>>>>>     Field('updated_by', db.auth_user, update=auth.user_id, 
>>>>> writable=False, readable=False),
>>>>>     Field('exports_wants_to', 'list:reference countries', 
>>>>> label='Domina šalys'),
>>>>>     Field('exports_to', 'list:reference countries', label='Eksportuoja 
>>>>> į', required=False),
>>>>>     Field('imports_from', 'list:reference countries', 
>>>>> label='Importuoja iš', required=False),
>>>>>     format = '%(title)s')
>>>>>
>>>>> from plugin_multiselect_widget import (
>>>>>     hmultiselect_widget, vmultiselect_widget,
>>>>>     rhmultiselect_widget, rvmultiselect_widget,
>>>>> )
>>>>>
>>>>> db.company.exports_to.widget = hmultiselect_widget
>>>>> db.company.imports_from.widget = hmultiselect_widget
>>>>> db.company.exports_wants_to.widget = hmultiselect_widget
>>>>>     
>>>>> db.company.produce_tag.widget = lambda field,value: \
>>>>>     SQLFORM.widgets.checkboxes.widget(field,value,cols=6)
>>>>>     
>>>>> db.company.Email.requires=IS_EMPTY_OR(IS_EMAIL(error_message='El. 
>>>>> paštas!'))
>>>>> db.company.email_1.requires=IS_EMPTY_OR(IS_EMAIL())
>>>>> db.company.email_2.requires=IS_EMPTY_OR(IS_EMAIL())
>>>>> db.company.code.requires=IS_EMPTY_OR(IS_NOT_IN_DB(db, db.company.code))
>>>>> db.company.exports_to.requires=IS_EMPTY_OR(IS_IN_DB(db, 
>>>>> db.countries.Country))
>>>>> db.company.exports_to.requires=IS_IN_DB(db,'countries.id
>>>>> ',db.countries._format,multiple=True)
>>>>> db.company.exports_wants_to.requires=IS_IN_DB(db,'countries.id
>>>>> ',db.countries._format,multiple=True)
>>>>> db.company.produce_tag.requires=IS_IN_DB(db,'tag.id
>>>>> ',db.tag._format,multiple=True)
>>>>>
>>>>> db.company.Association.requires=IS_IN_DB(db,'asoc.id',db.asoc._format, 
>>>>> zero='-----Pasirinkti-----')
>>>>>
>>>>> db.define_table('comment',
>>>>>    Field('body','text',label='Your comment'),
>>>>>    Field('company', db.company, 'list: reference company', 
>>>>> readable=False, writable=False),
>>>>>    Field('posted_on','datetime',default=request.now),
>>>>>    Field('posted_by', db.auth_user, 'list: reference auth_user', 
>>>>> default=auth.user_id))
>>>>>
>>>>> db.comment.posted_on.writable=db.comment.posted_on.readable=False
>>>>> db.comment.posted_by.writable=db.comment.posted_by.readable=False
>>>>> db.comment.company.default = request.args(0)
>>>>>
>>>>>
>>>>>
>>>>> On Tuesday, August 7, 2012 5:36:49 PM UTC+3, Massimo Di Pierro wrote:
>>>>>>
>>>>>> Can you please post the entire mode? My guess is an issue with 
>>>>>> capitalization perhaps combined with corruption of table files.
>>>>>>
>>>>>> On Tuesday, 7 August 2012 06:00:06 UTC-5, Aurelijus Useckas wrote:
>>>>>>>
>>>>>>> I've tried nearly any possible syntax, but with no success. Any line 
>>>>>>> with the reference to other table causes an error 1005 / 150: 
>>>>>>> "table creation failed because a foreign key constraint was not 
>>>>>>> correctly formed"
>>>>>>> Wasted a lot of time on it with no avail, guess will be forced to go 
>>>>>>> back to ol' SQLite :)
>>>>>>>
>>>>>>> On Wednesday, August 1, 2012 8:03:05 PM UTC+3, Massimo Di Pierro 
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Try
>>>>>>>>
>>>>>>>> Field('City', 'list:reference City', label='Miestas'),
>>>>>>>>
>>>>>>>> On Wednesday, 1 August 2012 11:05:02 UTC-5, Aurelijus Useckas wrote:
>>>>>>>>>
>>>>>>>>> tried it, still the same error :( thnx anyway
>>>>>>>>>
>>>>>>>>> On Wednesday, August 1, 2012 6:31:52 PM UTC+3, Massimo Di Pierro 
>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> Yes. this is wrong:
>>>>>>>>>>
>>>>>>>>>> Field('City', db.city, 'list:reference city', label='Miestas'),
>>>>>>>>>>
>>>>>>>>>> should be
>>>>>>>>>>
>>>>>>>>>> Field('City', 'list:reference city', label='Miestas'),
>>>>>>>>>>
>>>>>>>>>> On Wednesday, 1 August 2012 09:15:07 UTC-5, Aurelijus Useckas 
>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> Thank you Massimo, but the 1005/150 mysql problem seems to be 
>>>>>>>>>>> smth wring with foreign key (merging of tables). Are there any 
>>>>>>>>>>> flaws in my 
>>>>>>>>>>> DAL syntax? 
>>>>>>>>>>>
>>>>>>>>>>> This line seems to be the trigger:
>>>>>>>>>>> Field('City', db.city, 'list:reference city', label='Miestas'),
>>>>>>>>>>>
>>>>>>>>>>> it references:
>>>>>>>>>>>
>>>>>>>>>>> db.define_table('city',
>>>>>>>>>>>     Field('name', notnull=True, unique=True),
>>>>>>>>>>>     format='%(name)s')
>>>>>>>>>>>
>>>>>>>>>>> any ideas what's bothering mysql? 
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Wednesday, August 1, 2012 4:56:03 PM UTC+3, Massimo Di Pierro 
>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> db = DAL('mysql://....', check_reserved=['common','mysql'])
>>>>>>>>>>>>
>>>>>>>>>>>> Anyway, I am not sure your problem is that you are using  a 
>>>>>>>>>>>> reserved keyword. Perhaps the table exists already. I am also 
>>>>>>>>>>>> surprised you 
>>>>>>>>>>>> are getting a pymysql InternalError and not an OperationalError.
>>>>>>>>>>>>
>>>>>>>>>>>> On Wednesday, 1 August 2012 07:45:01 UTC-5, Aurelijus Useckas 
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> I've changed the long into longitude and it seems to be solved 
>>>>>>>>>>>>> but I still get errors:
>>>>>>>>>>>>>
>>>>>>>>>>>>> p2
>>>>>>>>>>>>> S'<class \'gluon.contrib.pymysql.err.InternalError\'> (1005, 
>>>>>>>>>>>>> u"Can\'t create table \'./lpkdb/asoc.frm\' (errno: 150)")'
>>>>>>>>>>>>>
>>>>>>>>>>>>> Now it says it cannot create next table, which is:
>>>>>>>>>>>>>
>>>>>>>>>>>>> db.define_table('asoc',
>>>>>>>>>>>>>     Field('name', label='Pavadinimas', unique=True),
>>>>>>>>>>>>>     Field('City', db.city, 'list:reference city', 
>>>>>>>>>>>>> label='Miestas'),
>>>>>>>>>>>>>     Field('address', label='Adresas'),
>>>>>>>>>>>>>     Field('www'),
>>>>>>>>>>>>>     Field('tel'),
>>>>>>>>>>>>>     Field('fax'),
>>>>>>>>>>>>>     Field('email'),
>>>>>>>>>>>>>     Field('President', label='Asociacijos prezidentas'),
>>>>>>>>>>>>>     Field('CEO', label='Asociacijos generalinis'),
>>>>>>>>>>>>>     Field('CEO_tel', label='Generalinio tel.'),
>>>>>>>>>>>>>     Field('CEO_email', label='Generalinio email'),
>>>>>>>>>>>>>     Field('CEO_mob', label='Generalinio mobilus'),
>>>>>>>>>>>>>     Field('Pres_tel', label='Prezidento tel.'),
>>>>>>>>>>>>>     Field('Pres_email', label='Prezidento email'),
>>>>>>>>>>>>>     Field('Pres_mob', label='Prezidento mobilus'),
>>>>>>>>>>>>>     Field('submited_at', 'datetime', default=request.now, 
>>>>>>>>>>>>> writable=False, readable=False),
>>>>>>>>>>>>>     Field('updated_at', 'datetime', default=request.now, 
>>>>>>>>>>>>> update=request.now, writable=False, readable=False),
>>>>>>>>>>>>>     Field('submited_by', db.auth_user, default=auth.user_id, 
>>>>>>>>>>>>> writable=False, readable=False),
>>>>>>>>>>>>>     Field('updated_by', db.auth_user, update=auth.user_id, 
>>>>>>>>>>>>> writable=False, readable=False),
>>>>>>>>>>>>>     format='%(name)s')
>>>>>>>>>>>>>
>>>>>>>>>>>>> Are there some guidlines on how to construct DAL field names 
>>>>>>>>>>>>> in order to avoid any conflict while migrating to mysql?
>>>>>>>>>>>>>  
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wednesday, August 1, 2012 3:36:51 PM UTC+3, tomasz bandura 
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Is it 'long' a mysql's reserved word?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Regards
>>>>>>>>>>>>>> Tomasz
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 2012/8/1 Aurelijus Useckas <aureliju...@gmail.com<javascript:>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> this is the trigger i guess:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> db.define_table('maps',
>>>>>>>>>>>>>>>     Field('name'),
>>>>>>>>>>>>>>>     Field('last_name'),
>>>>>>>>>>>>>>>     Field('long'),
>>>>>>>>>>>>>>>     Field('lat'),
>>>>>>>>>>>>>>>     format='%(name)s')
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Wednesday, August 1, 2012 3:30:40 PM UTC+3, Aurelijus 
>>>>>>>>>>>>>>> Useckas wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi, 
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I've built the app on SQLite and now want to migrate to the 
>>>>>>>>>>>>>>>> server based mysql. BUT web2py hangs in the middle of 
>>>>>>>>>>>>>>>> creating, basicaly 
>>>>>>>>>>>>>>>> just after the auth tables. When I restart the apache I can 
>>>>>>>>>>>>>>>> see auth tables 
>>>>>>>>>>>>>>>> as well as a few from my app.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> this is the err ticket that I get:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> (dp1
>>>>>>>>>>>>>>>> S'output'
>>>>>>>>>>>>>>>> p2
>>>>>>>>>>>>>>>> S'<class \'gluon.contrib.pymysql.err.**ProgrammingError\'> 
>>>>>>>>>>>>>>>> (1064, u"You have an error in your SQL syntax; check the 
>>>>>>>>>>>>>>>> manual that 
>>>>>>>>>>>>>>>> corresponds to your MySQL server version for the right syntax 
>>>>>>>>>>>>>>>> to use near 
>>>>>>>>>>>>>>>> \'long VARCHAR(255),\\n    lat VARCHAR(255),\\n    PRIMARY 
>>>>>>>>>>>>>>>> KEY(id)\\n) 
>>>>>>>>>>>>>>>> ENGINE=InnoDB CHA\' at line 5")'
>>>>>>>>>>>>>>>> p3
>>>>>>>>>>>>>>>> sS'layer'
>>>>>>>>>>>>>>>> p4
>>>>>>>>>>>>>>>> S'/opt/web-apps/web2py/**applications/init/models/db_**
>>>>>>>>>>>>>>>> comp.py'
>>>>>>>>>>>>>>>> p5
>>>>>>>>>>>>>>>> sS'code'
>>>>>>>>>>>>>>>> p6
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> thnx
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>  -- 
>>>>>>>>>>>>>>>  
>>>>>>>>>>>>>>>  
>>>>>>>>>>>>>>>  
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>

-- 



Reply via email to