Thanx Yarin, I've fixed this one. There are no more reserved words in the
table or field definitions. Nevertheless it returns an error 1005 / 150,
which refer to: "table creation failed because a foreign key constraint was
not correctly formed".
If I get rid of any refering fields it works fine. Somehow the mysql
doesn't recognise/understand the refering definitions.

On Wed, Aug 8, 2012 at 4:08 AM, Yarin <ykess...@gmail.com> wrote:

> 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,'countrie**s.id<http://countries.id>
>>>>>> ',db.countries._format,**multiple=True)
>>>>>> db.company.exports_wants_to.**requires=IS_IN_DB(db,'countrie**s.id<http://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>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 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.**Pr**ogrammingError\'>
>>>>>>>>>>>>>>>>> (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/**applica**tions/init/models/db_**
>>>>>>>>>>>>>>>>> comp.py'
>>>>>>>>>>>>>>>>> p5
>>>>>>>>>>>>>>>>> sS'code'
>>>>>>>>>>>>>>>>> p6
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>  thnx
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>  --
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>   --
>
>
>
>

-- 



Reply via email to