yesterday I tried to make a test installation of my solution at one of my customers location. They are using Oracle 10g. We had several more or less severe problems, that we could not solve.
I am almost sure that most of the blame goes to Oracle’s JDBC driver, but I need to get my solution running there, so I hope we can find a way.
Here is (in short) a list of the biggest problems:
Schema support: we could not create a repository using a schema. When we tried that, Servoy created a repository fine. Upon restart, it complained that there was no repository. If you then click on “Create” it complains that the tables already exist. Clicking several times on “Check” in the repository dialog sometimes leads to a situation where Servoy displays the repository properly. If you leave out the schema, everything works as expected.
Data types: I managed to import a solution once. After deleting and recreating the repository (without schema) I had to import my solution again. This failed because of a type mismatches. Servoy complains about
number/integer (at first import, an integer was converted to number as Oracle has no integer type; when comparing the exported solution with the database version, Servoy says “… has datatype NUMBER while in the import version the column has type INTEGER”)
blob: a Blob was correctly created on first import, when importing again Servoy says “… has length 4000 while in the import version the column has length 2147483647”
Does anybody else have any experience on using Servoy in conjunction with 10g and can help me out?
I just want to re-activate this issue. I am not doing this for test purposes only. This customer has just signed a contract for 50 licences of our product (this will include Servoy, of course) that they want to deploy in the beginning of next year. Until then, I need these issues to be resolved.
And, after all, I did not get my solution to run on Oracle 10g. It might be Oracles fault, but they are the biggest database producer and have their logo right here on the Servoy main page. At least in my case, it simply did not work.
The schema problem is not the biggest problem, because at least we can create a repository, although it does not work as it should.
The bigger problem is the data type issue. Again: I imported a repository containing table information with many int columns. These are correctly converted to number in Oracle. But once all tables are already created and you try to import that solution, you get those type mismatch errors, saying that database has numbers while solution to import has integers. The solution cannot be imported then. Same with blobs.
As a facit: you can import a solution only once if the tables do not already exist.
Maybe it works ok if you do all your development on ORACLE. But this is not my case and will not be my case.
I’ve personally done quite some development against oracle but I always use a datamodeling tool to manage my schema so I always created sql scripts that I’d execute against my local developer (sybase ASA) and the target Oracle database (10g and 9i). That works very well, while we investigate how we can solve the auto creation I’d recommend you to use the same approach.
patrick:
…saying that database has numbers while solution to import has integers. The solution cannot be imported then. Same with blobs…
In oracle everything is called numbers(with different lengths) but that should not produce errors, only a warning that there could be type conflict.
What error do you get? and does it stop the import??
I have “lost” the complete list of error messages. But like I said above, the messages were like “… has datatype NUMBER while in the import version the column has type INTEGER”.
And yes, the import failed. That’s what this post is about. We were not able to import the solution.
It looks like this: upon creation (first time import) everything is “translated” OK (integers, blobs, …). When trying to re-import, Servoy compares the oracle tables with the ones in the exported solution file and comes to that number/integer and blob 4000/2147483647 problem and fails to import.
Unfortunately, I don’t have the exact error anymore. I do have the error related to the schema problem. That is:
servoy.j2db.persistence.RepositoryException: No repository found in the database.com.servoy.j2db.persistence.RepositoryException: No repository found in the database.
at com.servoy.j2db.persistence.Repository.int(Unknown Source)
at com.servoy.j2db.persistence.Server.createRepositoryTables(Unknown Source)
at com.servoy.j2db.develop.J2DBDeveloper.startOrCreateRepository(Unknown Source)
at com.servoy.j2db.develop.ap.try(Unknown Source)
at com.servoy.j2db.develop.J2DBDeveloper.aW(Unknown Source)
at com.servoy.j2db.J2DBClient.dataBaseInit(Unknown Source)
at com.servoy.j2db.develop.J2DBDeveloper.dataBaseInit(Unknown Source)
at com.servoy.j2db.develop.J2DBDeveloper.main(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.servoy.j2db.startup.Bootstrap.main(Bootstrap.java:119)
at Servoy.main(Servoy.java:27)
To fix this start the server with -upgradeRepository once as stated in the manual or press “check repository” button in the repository dialog in the developer. (this will create al needed servoy_xxxx tables)
No, I know that. The error I posted occured although there was a repository. See me post above:
Schema support: we could not create a repository using a schema. When we tried that, Servoy created a repository fine. Upon restart, it complained that there was no repository. If you then click on “Create” it complains that the tables already exist. Clicking several times on “Check” in the repository dialog sometimes leads to a situation where Servoy displays the repository properly. If you leave out the schema, everything works as expected.
I have just done another test importing a big solution into ORACLE 10g. And I have to say: there were no problems! Schema support worked without problem. We will be doing some more testing on the matter of NCLOB and so forth, so I might have to come back to you on 10g matters…
The only thing that did happen is this:
User information import failed: com.servoy.j2db.persistence.RepositoryException: java.sql.SQLException: Fehlender IN- oder OUT-Parameter auf Index:: 3 Fehlender IN- oder OUT-Parameter auf Index:: 3
(The German part reads as “missing IN- or OUT-parameter on Index:: 3”)
The repository I imported had everything: data, i18n, user info. Just the newly introduced user import seemed to trouble. I chose to add users to the Admin group.