latest patch - also try not specifiying use_ansi=False, it should detect that now
On May 18, 2010, at 2:04 PM, Kent wrote:
> It specifically says NCHAR is not usable *for unicode* until Oracle
> 9i. (Showing my ignorance here: are you certain NVARCHAR2 uses
> NCHAR? Seems logical to me.)
>
> The white paper further states: "No Unicode character set is supported
> as the national character set prior to Oracle 9i". I believe the "N"
> in NVARCHAR2 stands for "national" so my best guess is you are correct
> that NVARCHAR2 is useless in oracle 8 (as far as Unicode is
> concerned).
>
>
> I caught the Exception as we discussed earlier and then set
> unicode_for_unicode = False in engine/default.py.
>
> Now I'm getting a problem later with unicode:
>
> Traceback (most recent call last):
> File "/home/rarch/tg2env/bin/paster", line 8, in <module>
> load_entry_point('PasteScript==1.7.3', 'console_scripts', 'paster')
> ()
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> PasteScript-1.7.3-py2.6.egg/paste/script/command.py", line 84, in run
> invoke(command, command_name, options, args[1:])
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> PasteScript-1.7.3-py2.6.egg/paste/script/command.py", line 123, in
> invoke
> exit_code = runner.run(args)
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> PasteScript-1.7.3-py2.6.egg/paste/script/appinstall.py", line 68, in
> run
> return super(AbstractInstallCommand, self).run(new_args)
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> PasteScript-1.7.3-py2.6.egg/paste/script/command.py", line 218, in run
> result = self.command()
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> PasteScript-1.7.3-py2.6.egg/paste/script/appinstall.py", line 456, in
> command
> self, config_file, section,
> self.sysconfig_install_vars(installer))
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> PasteScript-1.7.3-py2.6.egg/paste/script/appinstall.py", line 598, in
> setup_config
> mod.setup_app, command, filename, section, vars)
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> PasteScript-1.7.3-py2.6.egg/paste/script/appinstall.py", line 612, in
> _call_setup_app
> func(command, conf, vars)
> File "/home/rarch/trunk/src/appserver/pylotengine/websetup.py", line
> 32, in setup_app
>
> model.metadata.create_all(bind=config['pylons.app_globals'].sa_engine)
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> SQLAlchemy-0.6.0.1-py2.6-linux-x86_64.egg/sqlalchemy/schema.py", line
> 1958, in create_all
> bind.create(self, checkfirst=checkfirst, tables=tables)
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> SQLAlchemy-0.6.0.1-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
> line 1504, in create
> self._run_visitor(ddl.SchemaGenerator, entity,
> connection=connection, **kwargs)
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> SQLAlchemy-0.6.0.1-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
> line 1535, in _run_visitor
> visitorcallable(self.dialect, conn,
> **kwargs).traverse_single(element)
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> SQLAlchemy-0.6.0.1-py2.6-linux-x86_64.egg/sqlalchemy/sql/visitors.py",
> line 77, in traverse_single
> return meth(obj, **kw)
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> SQLAlchemy-0.6.0.1-py2.6-linux-x86_64.egg/sqlalchemy/engine/ddl.py",
> line 36, in visit_metadata
> collection = [t for t in sql_util.sort_tables(tables) if
> self._can_create(t)]
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> SQLAlchemy-0.6.0.1-py2.6-linux-x86_64.egg/sqlalchemy/engine/ddl.py",
> line 29, in _can_create
> return not self.checkfirst or not
> self.dialect.has_table(self.connection, table.name,
> schema=table.schema)
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> SQLAlchemy-0.6.0.1-py2.6-linux-x86_64.egg/sqlalchemy/dialects/oracle/
> base.py", line 626, in has_table
> name=self.denormalize_name(table_name),
> schema_name=self.denormalize_name(schema))
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> SQLAlchemy-0.6.0.1-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
> line 1109, in execute
> return Connection.executors[c](self, object, multiparams, params)
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> SQLAlchemy-0.6.0.1-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
> line 1186, in _execute_clauseelement
> return self.__execute_context(context)
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> SQLAlchemy-0.6.0.1-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
> line 1215, in __execute_context
> context.parameters[0], context=context)
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> SQLAlchemy-0.6.0.1-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
> line 1284, in _cursor_execute
> self._handle_dbapi_exception(e, statement, parameters, cursor,
> context)
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> SQLAlchemy-0.6.0.1-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
> line 1282, in _cursor_execute
> self.dialect.do_execute(cursor, statement, parameters,
> context=context)
> File "/home/rarch/tg2env/lib/python2.6/site-packages/
> SQLAlchemy-0.6.0.1-py2.6-linux-x86_64.egg/sqlalchemy/engine/
> default.py", line 281, in do_execute
> cursor.execute(statement, parameters)
> sqlalchemy.exc.DatabaseError: (DatabaseError) ORA-12704: character set
> mismatch
> 'SELECT table_name FROM all_tables WHERE table_name = :name AND owner
> = :schema_name' {'name': u'TG_PERMISSION', 'schema_name': u'ARC'}
> install.sh: failed trying to run setup-app
>
>
> I assume your suggestion that "types.Unicode() renders VARCHAR2, not
> NVARCHAR2, when oracle 8 is detected" would fix this problem, correct?
>
>
>
>
> On May 18, 1:33 pm, Michael Bayer <[email protected]> wrote:
>> so here is the proposal - types.Unicode() renders VARCHAR2, not NVARCHAR2,
>> when oracle 8 is detected.
>>
>> since NVARCHAR2 is essentially useless on oracle 8, correct ?
>>
>> when I used to use oracle 8 we used VARCHAR2 for unicode data. i wasn't
>> aware of the N- types at that time.
>>
>> also the suite of changes here is going to roll in the "use_ansi" flag into
>> the oracle 8 detection, its a bit redundant to require it manually.
>>
>> On May 18, 2010, at 1:29 PM, Kent wrote:
>>
>>
>>
>>> There is a fairly short Oracle-published white paper on Unicode
>>> support
>>> here:http://www.oracle.com/technology/tech/globalization/pdf/TWP_AppDev_Un...
>>
>>> It does state that starting with Oracle7 there was Unicode support and
>>> lists a table of Oracle version, Character set and Unicode version.
>>> It also states you can *not* store Unicode in the NCHAR datatype until
>>> Oracle 9i.
>>
>>> On May 18, 1:23 pm, Kent Bower <[email protected]> wrote:
>>>> No, this is what was causing "ORA-12704: character set mismatch":
>>
>>>> SQL> SELECT CAST('test unicode returns' AS NVARCHAR2(60)) AS anon_1 FROM
>>>> DUAL;
>>>> SELECT CAST('test unicode returns' AS NVARCHAR2(60)) AS anon_1 FROM DUAL
>>>> *
>>>> ERROR at line 1:
>>>> ORA-12704: character set mismatch
>>
>>>> On 5/18/2010 1:17 PM, Michael Bayer wrote:
>>
>>>>> Sorry, I meant NVARCHAR2.
>>
>>>>> SELECT CAST('test unicode returns' AS NVARCHAR2(60)) AS anon_1 FROM DUAL
>>
>>>>> works ? or no ?
>>
>>>>> On May 18, 2010, at 12:17 PM, Kent wrote:
>>
>>>>>> Oops, my bad, I didn't notice you that statement changed NVARCHAR2 to
>>>>>> NVARCHAR:
>>
>>>>>> Here is that result:
>>>>>> =============================
>>>>>> SQL> SELECT CAST('test unicode returns' AS NVARCHAR(60)) AS anon_1
>>>>>> FROM DUAL
>>>>>> 2 ;
>>>>>> SELECT CAST('test unicode returns' AS NVARCHAR(60)) AS anon_1 FROM
>>>>>> DUAL
>>>>>> *
>>>>>> ERROR at line 1:
>>>>>> ORA-00907: missing right parenthesis
>>>>>> =============================
>>
>>>>>> On May 18, 12:15 pm, Kent<[email protected]> wrote:
>>
>>>>>>>> SELECT CAST('test unicode returns' AS NVARCHAR(60)) AS anon_1 FROM DUAL
>>
>>>>>>>> then it seems like either that fails directly, or it fails when the
>>>>>>>> client gets a hold of it. See what happens with that statement.
>>>>>>>> Not sure that Oracle 8 has NVARCHAR which might be the issue.
>>
>>>>>>> Please see the beginning of my previous post, that is the statement
>>>>>>> creating the "ORA-12704: character set mismatch"
>>
>>>>>>> So, you intend to change exc.DBAPIError to Exception? (That is
>>>>>>> actually exactly what I had just done as a workaround until I heard
>>>>>>> back from you)
>>
>>>>>>> --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "sqlalchemy" group.
>>>>>>> To post to this group, send email to [email protected].
>>>>>>> To unsubscribe from this group, send email to
>>>>>>> [email protected].
>>>>>>> For more options, visit this group
>>>>>>> athttp://groups.google.com/group/sqlalchemy?hl=en.
>>
>>>>>> --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "sqlalchemy" group.
>>>>>> To post to this group, send email to [email protected].
>>>>>> To unsubscribe from this group, send email to
>>>>>> [email protected].
>>>>>> For more options, visit this group
>>>>>> athttp://groups.google.com/group/sqlalchemy?hl=en.
>>
>>>> --
>>>> You received this message because you are subscribed to the Google Groups
>>>> "sqlalchemy" group.
>>>> To post to this group, send email to [email protected].
>>>> To unsubscribe from this group, send email to
>>>> [email protected].
>>>> For more options, visit this group
>>>> athttp://groups.google.com/group/sqlalchemy?hl=en.
>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "sqlalchemy" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected].
>>> For more options, visit this group
>>> athttp://groups.google.com/group/sqlalchemy?hl=en.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "sqlalchemy" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group
>> athttp://groups.google.com/group/sqlalchemy?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/sqlalchemy?hl=en.
>
ora8_unicode.patch
Description: Binary data
-- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
