I finally understand why the app wizard prefixes every table with 't_' and every field with 'f_'. Probably a good practice anyway.
Am Dienstag, 7. August 2012 17:03:44 UTC+2 schrieb Yarin: > > 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 <aurelijus.usec...@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.**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 >>>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> --