Hi DenesL, This old application works now with with web2py 1.83.2 and mysql in RedHat 5.5 with 64 bits
However, with web2py in trunk and mysql it doesn't works De hecho en esta liga, te agradecí que sin querer me solucionaste un problema :D http://groups.google.com/group/web2py/browse_thread/thread/789387057d5e4716/03369058c0e06310#03369058c0e06310 Es una aplicación que tiene 2 bases de datos legadas y una tercera en la cual se tienen los datos con los cuales se pueden generar ligas entre las 2 bases legadas y dar los servicios web que informan a otras aplicaciones el contenido de las 2 legadas. Suena raro pero eso necesitan en la escuela en la que trabajo en México. Gracias de antemano On Jan 28, 4:15 pm, DenesL <[email protected]> wrote: > Are you sure it worked before? > As far as I know mysql is not supported for legacy DBs using > primarykey. > > On Jan 28, 5:04 pm, drayco <[email protected]> wrote: > > > Hi, I updated my trunk version > > > However, The same issue is still > > > This is the new traceback > > > Traceback (most recent call last): > > File "/home/drayco/web2py/gluon/restricted.py", line 188, in > > restricted > > exec ccode in environment > > File "/home/drayco/web2py/applications/iscada/models/cfedb.py", line > > 16, in <module> > > migrate = False) > > File "/home/drayco/web2py/gluon/dal.py", line 3471, in define_table > > sequence_name=sequence_name)) > > File "/home/drayco/web2py/gluon/dal.py", line 3755, in __init__ > > "primarykey must be a list of fields from table '%s " % tablename > > SyntaxError: primarykey must be a list of fields from table > > 'med_dnpmst_4 > > > SnapShot > > > <type 'exceptions.SyntaxError'>(primarykey must be a list of fields > > from table 'med_dnpmst_4 ) > > > File /home/drayco/web2py/gluon/dal.py in __init__ at line 3755 > > > Function argument list > > > (self=<Table {'indice': <gluon.dal.Field object at 0x2...ractual': > > <gluon.dal.Field object at 0x25b25d0>}>, db=<DAL {'_lastsql': "SET > > sql_mode='NO_BACKSLASH_ES...tables': [], '_migrate': True, > > '_pool_size': 10}>, tablename='med_dnpmst_4', > > *fields=[<gluon.dal.Field object>, <gluon.dal.Field object>, > > <gluon.dal.Field object>, <gluon.dal.Field object>, <gluon.dal.Field > > object>, <gluon.dal.Field object>, <gluon.dal.Field object>], > > **args={'primarykey': ['DireccionUTR', 'Indice'], 'sequence_name': > > None, 'trigger_name': None}) > > > Code listing > > > 3750. > > 3751. > > 3752. > > 3753. > > 3754. > > 3755. > > > 3756. > > 3757. > > 3758. > > 3759. > > > if hasattr(self,'_primarykey'): > > for k in self._primarykey: > > if k not in self.fields: > > raise SyntaxError, \ > > "primarykey must be a list of fields from table '%s " % tablename > > > else: > > self[k].notnull = True > > > On Jan 28, 8:35 am, Massimo Di Pierro <[email protected]> > > wrote: > > > > this should now be fixed in trunk > > > > On Jan 8, 2:58 pm, Thadeus Burgess <[email protected]> wrote: > > > > > All I know is that tables are issued as lowercase, but you can still > > > > access > > > > your table as an uppercase attribute. > > > > > There is an inconsistency in the DAL somewhere because of this... > > > > Somewhere > > > > it is forgetting to convert to lower case. I don't know why converting > > > > table > > > > names to lower case is forced in web2py and I disagree with it. > > > > > for example: > > > > > db = DAL() > > > > db.define_table('TableA', Field('Superman')) > > > > # CREATE TABLE tablea WITH FIELDS superman > > > > db(db.TableA.Superman == "clark").select().first().Superman > > > > # SELECT * FROM tablea WHERE superman="clark" > > > > > -- > > > > Thadeus > > > > > On Sat, Jan 8, 2011 at 1:17 AM, mart <[email protected]> wrote: > > > > > really? I didn't know, thanks for pointing that out... > > > > > > just out of curiosity.... > > > > > > in > > > > > > in __getitem__ > > > > > return dict.__getitem__(self, str(key)) > > > > > KeyError: 'tecnogradua' > > > > > > don't the attribute lookups get done by python ultimately? Just > > > > > trying to understand... > > > > > how could this have worked if doing x.__getitem__ ? Even if dal does a > > > > > string.lower() or something, once the table is named and created, > > > > > would something (outside of migrate) not catch that error and set off > > > > > the alarm even before any change need to happen? > > > > > > Thanks, > > > > > Mart :) > > > > > > On Jan 8, 1:44 am, Thadeus Burgess <[email protected]> wrote: > > > > > > I can also confirm this is a bug with the new DAL. > > > > > > > It is only caused when using upper case characters in the table or > > > > > > field > > > > > > names. It seems that web2py converts all of the tablenames to lower > > > > > > case > > > > > > when issuing the SQL (so your actual tables are lower regardless of > > > > > > what > > > > > you > > > > > > specify in the python). There is something in the migrations that > > > > > > cause > > > > > this > > > > > > to come up, because it will work just fine one run and crash on > > > > > > another > > > > > run > > > > > > after changing some unrelated tables. > > > > > > > I don't think the DAL should force the tables to lowercase. > > > > > > > -- > > > > > > Thadeus > > > > > > > On Sat, Jan 8, 2011 at 12:38 AM, mart <[email protected]> wrote: > > > > > > > no, this is python... > > > > > > > > not sure how it could have worked before, but the key > > > > > > > (technogradua) > > > > > > > in .keys() is not being picked up... dal is simply pointing that > > > > > > > out > > > > > > > with the exception being thrown. I did notice when I made the > > > > > > > switch > > > > > > > that a few more of my mistakes got picked up (or it could be that > > > > > > > I > > > > > > > forgot that I changed something), but regardless... since > > > > > > > switching to > > > > > > > the latest DAL release and fixing my mistakes that it quickly > > > > > > > picked > > > > > > > up, I have had no problems (except those that I cause). I would > > > > > > > simply > > > > > > > take those exceptions for cash, change the case and enjoy one less > > > > > > > exception ;) > > > > > > > > Mart :) > > > > > > > > On Jan 8, 1:19 am, drayco <[email protected]> wrote: > > > > > > > > Ok, I understand your point. > > > > > > > > > But this is a issue of DAL or what? > > > > > > > > > because I only update web2py to trunk version > > > > > > > > > On Jan 8, 12:15 am, mart <[email protected]> wrote: > > > > > > > > > > Probably just being unhappy with the case :) > > > > > > > > > > tecnoGradua != tecnogradua > > > > > > > > > > Mart :) > > > > > > > > > > Field("tecnoGradua", 'string', > > > > > > > > > > On Jan 8, 12:57 am, drayco <[email protected]> wrote: > > > > > > > > > > > Hi, this code works with web2py 1.89.5 with mysql > > > > > > > > > > > but with web2py in trunk and mysql it dosent works. > > > > > > > > > > > db.define_table("lentes", > > > > > > > > > > audit, > > > > > > > > > > Field("tecnoGradua", 'string', > > > > > > requires=IS_IN_SET(['MONOFOCAL','BIFOCAL','MULTIFOCAL']),label="Num. > > > > > > > > > > de Graduaciones"), > > > > > > > > > > Field("material", "string", requires=IS_IN_SET(['MICA > > > > > > > CR-39','ORMA > > > > > > > > > > 1.50','HIGH INDEX','THIN & LITE 1.67 > > > > > > > > > > ASFÉRICA','POLICARBONATO','CRISTAL'])), > > > > > > > > > > Field("tipo", > > > > > > > > > > "string",requires=IS_NULL_OR(IS_IN_SET(['FLAT > > > > > > > > > > TOP','BLEND O YOUNGER','PROGRESIVOS','PROGRESIVOS VARILUX > > > > > > > > > > COMFORT > > > > > > > > > > NE','PROGRESIVOS COMPACTOS','PROGRESIVOS VARILUX COMFORT > > > > > SHORT']))), > > > > > > > > > > Field("tecnoVisual", > > > > > > 'string',requires=IS_NULL_OR(IS_IN_SET(['PHOTOGRAY','TRANSITIONS'])),label= > > > > > > > "Tecnologia > > > > > > > > > > de Visualización"), > > > > > > > > > > Field("tratamiento", > > > > > "string",requires=IS_NULL_OR(IS_IN_SET(['CON > > > > > > > > > > ANTIRREFLEJANTE','ESPEJEADO','CRIZAL FORTE','CRIZAL > > > > > > > > > > ALIZÉ']))), > > > > > > > > > > Field('limitup','double', writable=False, > > > > > > > > > > readable=False), > > > > > > > > > > Field('limitdown','double', writable=False, > > > > > > > > > > readable=False), > > > > > > > > > > Field("promo", "double", > > > > > requires=[IS_NOT_EMPTY(error_message='No > > > > > > > > > > puede estar > > > > > > > > > > vacio'),IS_FLOAT_IN_RANGE(0,10000,error_message='Debe > > > > > ser > > > > > > > > > > un numero positivo entre 0 y 10000')], label='Precio de > > > > > Promoción'), > > > > > > > > > > Field("precio", "double", writable=False, > > > > > > > > > > readable=False), > > > > > > > > > > Field("costo", "double", writable=False, > > > > > > > > > > readable=False), > > > > > > > > > > Field("observaciones","text", writable=False, > > > > > readable=False)) > > > > > > > > > > > This is the traceback > > > > > > > > > > > Traceback (most recent call last): > > > > > > > > > > File "/home/drayco/web2py/gluon/restricted.py", line 188, > > > > > > > > > > in > > > > > > > > > > restricted > > > > > > > > > > exec ccode in environment > > > > > > > > > > File > > > > > > > > > > "/home/drayco/web2py/applications/movil/models/db.py", > > > > > line > > > > > > > > > > 272, in <module> > > > > > > > > > > Field("observaciones","text", writable=False, > > > > > readable=False)) > > > > > > > > > > File "/home/drayco/web2py/gluon/dal.py", line 3441, in > > > > > define_table > > > > > > > > > > polymodel=polymodel) > > > > > > > > > > File "/home/drayco/web2py/gluon/dal.py", line 551, in > > > > > create_table > > > > > > > > > > fake_migrate=fake_migrate) > > > > > > > > > > File "/home/drayco/web2py/gluon/dal.py", line 595, in > > > > > migrate_table > > > > > > > > > > and not isinstance(table[key].type, SQLCustomType) \ > > > > > > > > > > File "/home/drayco/web2py/gluon/dal.py", line 3778, in > > > > > __getitem__ > > > > > > > > > > return dict.__getitem__(self, str(key)) > > > > > > > > > > KeyError: 'tecnogradua' > > > > > > > > > > > Can I need to change something? > >

