The problem still exists in the latest nightly build.

Without this modification (changing the field length to 128) launching 
web2py on the remote GAE server gives me the error:

DatabaseError: 1071: Specified key was too long; max key length is 767 bytes


The whole traceback is as follows:

Traceback (most recent call last):
  File 
"/base/data/home/apps/s~vocabilis-net/1.360870371412546434/gluon/restricted.py",
 line 205, in restricted
    exec ccode in environment
  File 
"/base/data/home/apps/s~vocabilis-net/1.360870371412546434/applications/vocabilis/models/db.py",
 line 22, in <module>
    session.connect(request, response, db = db)
  File 
"/base/data/home/apps/s~vocabilis-net/1.360870371412546434/gluon/globals.py", 
line 523, in connect
    migrate=table_migrate,
  File 
"/base/data/home/apps/s~vocabilis-net/1.360870371412546434/gluon/dal.py", line 
6943, in define_table
    polymodel=polymodel)
  File 
"/base/data/home/apps/s~vocabilis-net/1.360870371412546434/gluon/dal.py", line 
810, in create_table
    logfile = self.file_open(table._loggername, 'a')
  File 
"/base/data/home/apps/s~vocabilis-net/1.360870371412546434/gluon/dal.py", line 
3816, in file_open
    return DatabaseStoredFile(self.db,filename,mode)
  File 
"/base/data/home/apps/s~vocabilis-net/1.360870371412546434/gluon/dal.py", line 
3757, in __init__
    self.db.executesql("CREATE TABLE IF NOT EXISTS web2py_filesystem (path 
VARCHAR(512), content LONGTEXT, PRIMARY KEY(path) ) ENGINE=InnoDB;")
  File 
"/base/data/home/apps/s~vocabilis-net/1.360870371412546434/gluon/dal.py", line 
7022, in executesql
    self._adapter.execute(query)
  File 
"/base/data/home/apps/s~vocabilis-net/1.360870371412546434/gluon/dal.py", line 
3865, in execute
    return self.log_execute(a.decode('utf8'))
  File 
"/base/data/home/apps/s~vocabilis-net/1.360870371412546434/gluon/dal.py", line 
1546, in log_execute
    ret = self.cursor.execute(*a, **b)
  File 
"/base/python27_runtime/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py",
 line 424, in execute
    self._DoExec(request)
  File 
"/base/python27_runtime/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py",
 line 355, in _DoExec
    response = self._conn.MakeRequest('Exec', request)
  File 
"/base/python27_runtime/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py",
 line 711, in MakeRequest
    response = self._MakeRetriableRequest(stub_method, request)
  File 
"/base/python27_runtime/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py",
 line 742, in _MakeRetriableRequest
    sql_exception.message))
DatabaseError: 1071: Specified key was too long; max key length is 767 bytes


On Saturday, January 7, 2012 7:43:22 AM UTC+7, howesc wrote:
>
> i don't know if i'm gonna regret this later, but in dal.py i changed that 
> field length to 128:
>
>             self.db.executesql("CREATE TABLE IF NOT EXISTS 
> web2py_filesystem (path VARCHAR(128), content LONGTEXT, PRIMARY KEY(path) ) 
> ENGINE=InnoDB;")
>
> now it works again.
>

-- 



Reply via email to