However migrations still do not work in Oracle, namely: when you have string or text (varchar2/nvarchar2 or clob/nclob) field in a table and want to modify it, e.g. change length, you get the error:
Traceback (most recent call last): File "c:\web2py\gluon\restricted.py", line 98, in restricted exec ccode in environment File "c:/web2py/applications/advantage/models/db.py", line 76, in <module> SQLField('kind', 'string'), File "c:\web2py\gluon\sql.py", line 860, in define_table raise e DatabaseError: ORA-00911: bad symbol Web2py code snippet: #BEFORE: db.define_table('phones', SQLField('phone', 'string', length=32), SQLField('header', db.headers), SQLField('type', 'integer'), SQLField('kind', 'string'), ) #AFTER (want to make length =100, migration) db.define_table('phones', SQLField('phone', 'string', length=100), SQLField('header', db.headers), SQLField('type', 'integer'), SQLField('kind', 'string'), ) SQL.LOG shows: timestamp: 2009-04-06T14:27:33.031000 ALTER TABLE phones ADD phone__tmp NVARCHAR2(100); UPDATE phones SET phone__tmp=phone; ALTER TABLE phones DROP COLUMN phone; ALTER TABLE phones ADD phone NVARCHAR2(100); UPDATE phones SET phone=phone__tmp; ALTER TABLE phones DROP COLUMN phone__tmp; There are no obvious bad symbols here. The only workaround I have found for now is manual removing the field from the table and running a 'migration'. This makes me suspect that '__tmp' part of name is bad... On 6 апр, 14:22, SergeyPo <ser...@zarealye.com> wrote: > One problem resolved: "ProgrammingError: LOB variable no longer valid > after subsequent fetch " > this error can be eliminated. In gluon/sql.py modify SQL_DIALECTS for > oracle: make > 'string': 'NVARCHAR2(%(length)s)', > 'text': 'NCLOB', > > instead of > 'string': 'VARCHAR2(%(length)s)', > 'text': 'CLOB', > > Reason of cx_Oracle error while fetching UTF-encoded data from > database is, that Oracle can output national symbols only for > NVARCHAR2 and NCLOB data types, VARCHAR2 and CLOB are intended only > for ASCII. Since we are all multinational and Python encourages us all > to use UTF-8 please, Massimo, consider changing these datatypes in > Oracle dialect! With this patch all basic operations including web2py > admin pages start to work. > > On 1 апр, 19:48, "A. C. Censi" <acce...@gmail.com> wrote: > > > * > > > ORA-00911:*invalid character*Cause:*identifiers may not start with any ASCII > > character other than letters and numbers. $#_ are also allowed after the > > first character. Identifiers enclosed by doublequotes may contain any > > character other than a doublequote. Alternative quotes (q'#...#') cannot use > > spaces, tabs, or carriage returns as delimiters. For all other contexts, > > consult the SQL Language Reference Manual. > > > Error: > > ORA-00911: invalid character > > > Cause: > > You tried to tried to execute an SQL statement that included a special > > character. > > > Action: > > The options to resolve this Oracle error are: > > > 1. This error occurs when you try to use a special character in an SQL > > statement. If a special character other than $, _, and # is used in the > > name > > of a column or table, the name must be enclosed in double quotations. > > 2. This error may occur if you've pasted your SQL into your editor from > > another program. Sometimes there are non-printable characters that may be > > present. In this case, you should try retyping your SQL statement and > > then > > re-execute it. > > 3. This error occurs when a special character is used in a WHERE > > clause<http://www.techonthenet.com/sql/where.php>and the value is not > > enclosed in single quotations. > > > For example, if you had the following SQL statement: > > > SELECT * FROM suppliers > > WHERE supplier_name = ?; > > > You would receive the following error message: > > > ORA-00911: invalid character > > You could correct this error by enclosing the ? in single quotations as > > follows:. > > > SELECT * FROM suppliers > > WHERE supplier_name = '?'; > > > From the Oracle side, ORA-00911 happens, as explained above, because of an > > invalid char in statements. It is not an invalid symbol!. > > > I hope that this help to isolate the error. > > > A. C. Censi > > > On Wed, Apr 1, 2009 at 11:52 AM, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > ORA-00911 error (bad symbol!) > > > -- > > A. C. Censi > > accensi [em] gmail [ponto] com > > accensi [em] montreal [ponto] com [ponto] br --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py Web Framework" group. To post to this group, send email to web2py@googlegroups.com To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---