I guess I like SQL better than frameworks. SQL is a query language for DDL and DML that is well documented and completely explicitly. Frameworks are opaque and invent a new syntax subject to ambiguities of parens, square braces, curly braces, dotted names, sometimes tablenames being implicit, sometimes fieldnames being implicit. Why?
So, I have repeatedly tried to make a link table like the famous dogs and owners tables in the Web2py book to no avail. Each time there is a problem I must do the following: - drop the database from mysql - stop apache - stop mysql - delete the web2py application via the filesystem - restore the web2py application via the filesystem making sure that the cache and session files have been deleted - restart apache - restart mysql - create the empty database in mysql - run the web2py application But, web2py's DAL fails to create the tables. Because the errors appear to be in the framework itself, the diagnostics are completely opaque through several layers of calls. The ultimate error is that one of the tables is not being created. But, that is circular--that is because the DAL failed to create the table for a brand new web2py application in an empty database. Judging from the references below it is because of a faulty migration. it's not like the most trivial migrations EVER work. it appears that some detritus of the previous application or tables exists so that web2py attempts its failed magic by doing a migration. So, perhaps the real question is how does one purge every possible vestige of both the tables and application so that web2py does not try any of its so-called magic (which is supposed to be very unpythonic, in any case). I've wasted nearly 60 hours on web2py and am about to stop wasting any more time. There seem to be many reasons that php, jquery, and RonR have dusted python for web development. Here is the traceback: TRACEBACK Traceback (most recent call last): File "C:\web2py\gluon\restricted.py", line 204, in restricted exec ccode in environment File "C:/web2py/applications/pyjokes/models/db.py", line 55, in <module> Field('category_id', 'integer')) File "C:\web2py\gluon\dal.py", line 5097, in define_table polymodel=polymodel) File "C:\web2py\gluon\dal.py", line 728, in create_table fake_migrate=fake_migrate) File "C:\web2py\gluon\dal.py", line 816, in migrate_table self.execute(sub_query) File "C:\web2py\gluon\dal.py", line 1359, in execute return self.log_execute(*a, **b) File "C:\web2py\gluon\dal.py", line 1353, in log_execute ret = self.cursor.execute(*a, **b) File "C:\web2py\gluon\contrib\pymysql\cursors.py", line 108, in execute self.errorhandler(self, exc, value) File "C:\web2py\gluon\contrib\pymysql\connections.py", line 184, in defaulterrorhandler raise errorclass, errorvalue ProgrammingError: (1146, u"Table 'jodb.joke_category' doesn't exist")