Hi Massimo, I've switched to trunk and yes the fields are now being created as expected.
As a suggestion could the auto migration have an extra check added to ensure that "upload" columns - if on non filesystem environments like GAE - alway create the equivalent _blob column? Thankfully even though the original columns have been dropped from the schema (along with my data) it's only currently running on my on local development machine so the loss isn't too much of a problem as I can recreate the data again. Thanks again for your fast response and fix. Kind regards, Matt On Wednesday, September 12, 2012 2:28:09 AM UTC+12, Massimo Di Pierro wrote: > > I found the web2py bug that caused this problem. It was an indentation > issue. Took the occasion to rewrite the logic a little better. > > Can you please check this works now? You should be able to update to trunk > and your missing fields should re-appear (they will be hidden, > writable=False, readable=False) but web2py should be able to use them as > intended. > > Please let me know asap. > > Massimo > > On Tuesday, 11 September 2012 03:44:46 UTC-5, Matt wrote: >> >> Hi there, >> >> First off thanks for all of the fantastic work putting 2.0 together. >> Looking forward to trying the new features. >> >> I've just upgraded from 1.99.7 -> 2.0.8 and I've discovered a serious bug >> which has resulted in the loss of my data. >> >> [I'm using both GAE with CloudSQL and dal(migrate_enabled = True)] >> >> The automatically created image_blob references for GAE fields like: >> >> Field('image', 'upload', required = True, length = 100) >> >> Have vanished and with them the data contained in the image_blob fields. >> >> It seems to have happened fairly randomly i.e. some tables are fine but >> others are affected. Out of about 6 tables using uploads only two still >> have the extra blob columns. >> >> I've had some of these table definitions around for a long time and they >> haven't changed. Whereas some others have been edited more recently. >> >> Any help or suggestions would be appreciated. Happy to give mere >> information if possible. >> >> Thanks in advance, >> Matt >> >> BTW: Also had this problem occur prior to the above: >> >> self.db.executesql("CREATE TABLE IF NOT EXISTS web2py_filesystem (path >> VARCHAR(512), content LONGTEXT, PRIMARY KEY(path) ) ENGINE=InnoDB;") >> File "/Projects/www/gluon/dal.py", line 7234, in executesql >> adapter.execute(query) >> File "/Projects/www/gluon/dal.py", line 4002, in execute >> return self.log_execute(a.decode('utf8')) >> File "/Projects/www/gluon/dal.py", line 1653, in log_execute >> ret = self.cursor.execute(*a, **b) >> File "/Library/Python/2.7/site-packages/MySQLdb/cursors.py", line 174, >> in execute >> File "/Library/Python/2.7/site-packages/MySQLdb/connections.py", line >> 36, in defaulterrorhandler >> OperationalError: (1071, 'Specified key was too long; max key length is >> 767 bytes') >> >> Temporary fix was to change from True to False. >> >> class DatabaseStoredFile: >> >> web2py_filesystem = True >> >> (I did already have the web2py_filesystem table of course) >> > --