[Zope-DB] ORACLE STORAGE - Solaris

Matthew T. Kromer matt@zope.com
Tue, 03 Sep 2002 11:38:07 -0400


Michael Havard wrote:

> Problem: We have ZOPE running on Solaris. We have an Oracle database 
> as a content repository using the DCOracleStorage option. Without 
> using DCOracle2 and DCOracleStorage ZOPE starts without incident. With 
> the Oracle storage hooked up I get the following:
>
> 2002-09-03T14:27:57 PANIC(300) z2 Startup exception
> Traceback (innermost last):
>  File /home/usr1/zope/z2.py, line 497, in ?
>  File <string>, line 1, in ?
>  File /home/usr1/zope/lib/python/Zope/__init__.py, line 40, in ?
>  File /home/usr1/zope/custom_zodb.py, line 1, in ?
>    (Object: DCOracle2)
>  File 
> /home/usr1/zope/lib/python/DCOracle2/DCOracleStorage/__init__.py, li?
>  File /home/usr1/zope/lib/python/DCOracle2/DCOracleStorage/Full.py, 
> line 9?
> ImportError: cannot import name dbiRaw
>
> We do have this solution running fine on a Windows NT box it's only n 
> Solaris that I receive this particular error.
>
> Question: Any thoughts on why this might occur?


Two possiblities spring to mind.  The first is that the *storage* can't 
import DCOracle2, or it is importing a very old version.  This is 
probably naming inconsistancies biting you; I orignally called the outer 
directory "DCO2" but this was deemed nonintuitive (albeit I didnt think 
it was too bad).  The inner "DCOracle2" directory should be in your 
lib/python, not the outer.  The inner one is the actual DCOracle2 
module, the outer one is the Zope database adapter.

The second possibility is that the last three lines of DCOracle2.py 
don't read:

# API 1.0 dbiRaw column
def dbiRaw(string):
    return TypeCoercion(string, 'SQLT_LBI') # Make it a long binary

That should be there.  Certainly it is in CVS, and I dont think it's 
changed in a long time (like 15 months).

Based on your traceback, I'd say your problem is the first.  You can 
probably fix this by symlinking the directory ../DCOracle2 in 
DCOracleStorage, but you might want to end up moving the DCOracle2 
folder from lib/python to lib/python/Products, and symlinking 
lib/python/Products/DCOralce2/DCOracle2 to lib/python/DCOracle2 and 
lib/python/Products/DCOracle2/DCOracleStorage to 
lib/python/DCOracleStorage.