After upgrading to web2py 2.0, we can no longer use the DAL or mysql 
adapters to make MySQL stored procedure calls.

In web2py 1.x I had 
reported<https://groups.google.com/d/msg/web2py/VaGJjwE3eYQ/GPa3xRe-HVsJ>how 
mysql stored procedures weren't working for us in certain 
circumstances- however we were able to circumvent those issues by simply 
creating a new DAL instance everytime we had to call a sproc. With the new 
DAL, that's no longer an option- indeed, any call to a stored procedure 
seems to fail in any attempt through the DAL or mysql adapter. 

   - Fails with both pymysql and mysqldb drivers
   - Fails when calling commit() immediately after
   - We did side-by-side comparisons with web2py 1.x on same server, 
   pointing to same db, and confirmed this fails only in 2.0
   - You can make sproc calls using the DAL straight from the web2py shell, 
   but only if you don't call commit. 


Stack trace:

Traceback (most recent call last):
  File "/opt/web-apps/web2py/gluon/main.py", line 580, in wsgibase
    BaseAdapter.close_all_instances('rollback')
  File "/opt/web-apps/web2py/gluon/dal.py", line 511, in close_all_instances
    getattr(instance, action)()
  File "/opt/web-apps/web2py/gluon/dal.py", line 1633, in rollback
    return self.connection.rollback()
ProgrammingError: (2014, "Commands out of sync; you can't run this command now")


Right now the only option is to make sproc calls directly through the 
pymysql driver API.


-- 



Reply via email to