Thanks daniele,

Are you saying that all we have to do is make James use all uppercase for
tablenames?
If so have you tried v2 yet?

d.

> -----Original Message-----
> From: daniele rizzi [mailto:[EMAIL PROTECTED]]
> Sent: Friday, January 25, 2002 8:22 AM
> To: James Users List
> Cc: [EMAIL PROTECTED]
> Subject: I: PLease Help Me!!!
>
>
> I hope somebody put this in a faq or the like...
>
> Title: what happens when you implements a MailRepository under OracleDb
> Refers to: James 1.2.*, Oracle Server 9i (perhaps 8i and others)
>
> Subtitle: something went wrong, but I can't put my finger on it...
>
> Step to replicate:
> - first install james 1.2* and test everything is ok;
> - then create the schema (lets say JAMES) and  the table Message
> in the Db,
>   as sketched with mySql example;
> - then change the repository def (I forgot the steps at home, but
> cutting &
> pasting
>   the mySql defs basically works);
> - finally rerun james: even though evrytng is ok, deamon crashed
> in a weird
> way,
>   with the weirder exception:
> 2002.01.24 10:13:34 086 Channel default opened loading broker properties
> from file:/var/maildatabase com.workingdogs.town.DataSetException: Error
> retrieving primary keys from table
> jamesusers: Unable to retrieve primary keys on table jamesusers
>         at com.workingdogs.town.ConnDefinition.getSchema
>
> What happend?:
> James uses Town lib to serialize messages from / to db: Town
> knows there is
> a table called
> "Messages" to analyze before operating: the analysis looks for:
> - the type and name of columns;
> - the primary key(s);
> Introspection is done via getDatabaseMetaData(), but the Oracle
> implementation is faulty:
>
> IF you CREATE TABLE MESSAGE(), then the catalog contains an entry MESSAGE
> and getDatabaseMetaData() returns data as expected;
>
> IF you CREATE TABLE Message(), then the catalog contains an entry MESSAGE
> and getDatabaseMetaData() doesn't find the table and returns empty data;
>
> IF at this point you're rather confused and thinks there's
> something rotten,
> you should
> re-read the above sentences thrice and accept as a fact of life:
> according to Oracle Support this is *NOT* a bug, instead that's
> exactly the
> logical behaviour (and I'd known it better and not bugged people that
> works...).
>
> Finally the solution (by dany, which is me):
> you cannot change James and you cannot touch Town, and you
> cannot force Oracle to support logic, but you can:
>
> open sqlplus james/james@sid_your_db:
>
> CREATE TABLE MESSAGES(ETC);
>
> CREATE SYNONYM "Messages" FOR MESSAGES;
>
> SELECT * FROM CAT;
> -- you should see 2 entries: the first UPPERCASE, the second MixedCase;
>
> COMMIT; -- it always helps;
>
> exit sqlplus;
>
> rerun all the testbed and james: it should work:
>
> hope it helps,
> d.
>
>
>
>
> -----Messaggio originale-----
> Da: Raghavender Rao [mailto:[EMAIL PROTECTED]]
> Inviato: gioved� 24 gennaio 2002 6.25
> A: [EMAIL PROTECTED]
> Oggetto: PLease Help Me!!!
>
>
> hi ther,
>
>      I am trying to install JAMES with users repositories stored in
> Oracle.Connection eshtablished successfully.But when i try to adduser or
> listusers it gives me following Exception..
>
> --------------------------------------------
>
> 2002.01.24 10:13:34 086 Channel default opened
> loading broker properties from file:/var/maildatabase
> com.workingdogs.town.DataSetException: Error retrieving primary keys from
> table
> jamesusers: Unable to retrieve primary keys on table jamesusers
>         at
> com.workingdogs.town.ConnDefinition.getSchema(ConnDefinition.java:227
> )
>         at com.workingdogs.town.TableDataSet.<init>(TableDataSet.java:299)
>         at com.workingdogs.town.TableDataSet.<init>(TableDataSet.java:280)
>         at
> org.apache.james.userrepository.UsersTownRepository.countUsers(UsersT
> ownRepository.java:171)
>         at
> org.apache.james.remotemanager.RemoteManager.parseCommand(RemoteManag
> er.java:195)
>         at
> org.apache.james.remotemanager.RemoteManager.parseRequest(RemoteManag
> er.java:117)
>         at
> org.apache.avalon.blocks.serversocket.ServerSocketAcceptor.run(Server
> SocketAcceptor.java:77)
>         at
> org.apache.avalon.utils.recycle.pool.Worker.run(Worker.java:113)
>
> -----------------------------
>
> table has primary keys but still error.
>
> still to add
>
>  in com.workingdogs.town.ConnDefinition class and method getSchema();
>
> ------------------------------------------------------
> 1.           KeyDef keydef = new KeyDef();
> 2.            try
> 3.            {
> 4.                Connection connection1 = getConnection();
> 5.                try
> 6.                {
> 7.                    DatabaseMetaData databasemetadata =
> connection1.getMetaData();
> 8.                    ResultSet resultset1;
> 9.                    for(resultset1 =
> databasemetadata.getPrimaryKeys(connection1.getCatalog(), null, s);
> resultset1.next(); keydef.addAttrib(resultset1.getString("COLUMN_NAME")));
> 10.                   resultset1.close();
> 11.                   if(keydef.size() == 0)      // this is the cause of
> the error.....
> 12.                       throw new DataSetException("Unable to retrieve
> primary keys on table " + s);
> 13.                   schema.setDefaultKeyDef(keydef);
> 14.                   schemas.put(s, schema);
> 15.               }
> 16.               catch(Exception exception2)
> 17.               {
> 18.                   throw new DataSetException("Error retrieving primary
> keys from table " + s + ": " + exception2.getMessage());
> 19.               }
> 20.               releaseConnection(connection1);
> 21.            }
> 22.           catch(Exception exception1)
> 23.           {
> 24.               if(exception1 instanceof DataSetException)
> 25.                   throw (DataSetException)exception1;
> 26.               else
> 27.                   throw new DataSetException("Error retrieving schema
> info for table " + s + ": " + exception1.getMessage());
> 28.           }
> 29.       }
> -----------------------------------------------------
>
>  Line 11 is causing ERROR!!! the size of keydef is 0
>  and i wrote a small program to test this....
> -----------------------------------------------------
>      try {
>             java.sql.DriverManager.registerDriver(new
> oracle.jdbc.driver.OracleDriver());
>             int i=0;
>             java.lang.String s = "jamesusers";
>             java.sql.Connection connection =
> java.sql.DriverManager.getConnection("mydatabaseurl","username","p
> assword");
>             java.sql.Statement statement = connection.createStatement();
>             java.sql.DatabaseMetaData databasemetadata =
> connection.getMetaData();
>             java.sql.ResultSet resultset;
>             resultset =
> databasemetadata.getPrimaryKeys(connection.getCatalog(),null,s);
>             java.lang.System.out.println("The Value of ResultSet is
> "+resultset.next());
>
>             /*while(resultset.next()){
>
>                java.lang.System.out.println("The coloums are
> "+resultset.getString("COLUMN_NAME"));
>
>             }*/
>         }catch(java.lang.Exception exception){
>
>             exception.printStackTrace();
>         }
> -----------------------------------------------------
>
> The output of this program is :
>
>  The Value of ResultSet is false
>
> I tried with different tables which has primary keys but the output is
> same...
>
> Please help me to solve this problem as soon as possible.
>
> Rao
>
>
>
>
>
> ------------------------------------------------------------------
> ----------
> ----
> MSN Photos is the easiest way to share and print your photos: Click Here
>
>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to