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.
>
--