Re: problem with derby and question about mysql

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Tue Jul 10 2007 - 14:55:29 EDT

  • Next message: Ivica Puljic: "Re: problem with derby and question about mysql"

    Hi Ivica,

    First of all I'd suggest you to use release 2.0.3 - this will spare
    you some package renaming going forward (as you may have noticed the
    only difference between 1.2.3 and 2.0.3 is that "org.objectstyle"
    packages are called "org.apache").

    > Caused by: java.sql.SQLSyntaxErrorException: Table/View
    > 'AUTO_PK_SUPPORT' does
    > not exist.

    Since the Derby path is a relative file name, could it be that it was
    created in one directory, but your app, running from a different
    directory than the modeler, accesses a different file? You may try
    using absolute file name for the derby DB location. E.g.
    "jdbc:derby:c:/databases/testdb;create=true"

    > Then I tried to switch from derby to mysql 5.0 database. Everything
    > went ok I
    > succsesfully created and commited objects to database. When Cayenne
    > Modeler
    > generates DB Schema, I select "Create FK Support" but Modeler
    > dosn't generate
    > sql code for foreign keys. MySQL 5 have support for foreign keys,
    > do Modeler
    > support this?

    It does - only since version 3.0 which is currently Alpha.

    Andrus

    On Jul 10, 2007, at 7:10 PM, Ivica Puljic wrote:

    > Hi all,
    >
    > I am starting with Cayenne (using version 1.2.3), and I am trying
    > tutorial
    > example.
    >
    > First I have a problem with derby. I successfully created database
    > schema's
    > and Java classes form Cayenne modeler. Here is code from "Generate DB
    > Schema":
    > ===================================================
    > CREATE TABLE GALLERY (ID INTEGER NOT NULL, NAME VARCHAR (200),
    > PRIMARY KEY
    > (ID));
    >
    > CREATE TABLE ARTIST (ARTIST_ID INTEGER NOT NULL, DATE_OF_BIRTH
    > DATE, NAME
    > VARCHAR (200), PRIMARY KEY (ARTIST_ID));
    >
    > CREATE TABLE PAINTING (ID INTEGER NOT NULL, NAME VARCHAR (200),
    > PRIMARY KEY
    > (ID));
    >
    > ALTER TABLE PAINTING ADD FOREIGN KEY (ID) REFERENCES ARTIST
    > (ARTIST_ID);
    >
    > ALTER TABLE PAINTING ADD FOREIGN KEY (ID) REFERENCES GALLERY (ID);
    >
    > DROP TABLE AUTO_PK_SUPPORT;
    >
    > CREATE TABLE AUTO_PK_SUPPORT ( TABLE_NAME CHAR(100) NOT NULL,
    > NEXT_ID
    > INTEGER NOT NULL, PRIMARY KEY(TABLE_NAME));
    >
    > DELETE FROM AUTO_PK_SUPPORT WHERE TABLE_NAME IN ('ARTIST', 'GALLERY');
    >
    > INSERT INTO AUTO_PK_SUPPORT (TABLE_NAME, NEXT_ID) VALUES ('ARTIST',
    > 200);
    >
    > INSERT INTO AUTO_PK_SUPPORT (TABLE_NAME, NEXT_ID) VALUES
    > ('GALLERY', 200)
    > ====================================================
    >
    > Seems everything is OK. Then switched to Eclipse and tried to
    > generate object
    > and then commite it to database.
    >
    > DataContext context = DataContext.createDataContext();
    > Artist picasso = (Artist) context.newObject(Artist.class);
    > picasso.setName("Pablo Picasso");
    > picasso.setDateOfBirthString("18811025");
    > context.commitChanges();
    >
    > I've got next error:
    >
    > ================================================
    > INFO QueryLogger: Created connection pool:
    > jdbc:derby:testdb;create=true
    > Driver class: org.apache.derby.jdbc.EmbeddedDriver
    > Min. connections in the pool: 1
    > Max. connections in the pool: 1
    > INFO QueryLogger: Opening connection: jdbc:derby:testdb;create=true
    > Login: null
    > Password: *******
    > INFO QueryLogger: +++ Connecting: SUCCESS.
    > INFO QueryLogger: Detected and installed adapter:
    > org.objectstyle.cayenne.dba.derby.DerbyAdapter
    > INFO QueryLogger: SELECT NEXT_ID FROM AUTO_PK_SUPPORT WHERE
    > TABLE_NAME = ?
    > FOR UPDATE [bind: 'ARTIST']
    > INFO QueryLogger: --- transaction started.
    > INFO QueryLogger: Opening connection: jdbc:derby:testdb;create=true
    > Login: null
    > Password: *******
    > INFO QueryLogger: +++ Connecting: SUCCESS.
    > Exception in thread "main"
    > org.objectstyle.cayenne.CayenneRuntimeException:
    > [v.1.2.3 May 6 2007] Commit Exception
    > at
    > org.objectstyle.cayenne.access.DataContext.flushToParent
    > (DataContext.java:1290)
    > at
    > org.objectstyle.cayenne.access.DataContext.commitChanges
    > (DataContext.java:1166)
    > at cayenne.tutorial.Main.main(Main.java:30)
    > Caused by: java.sql.SQLSyntaxErrorException: Table/View
    > 'AUTO_PK_SUPPORT' does
    > not exist.
    > ================================================
    >
    > Seems like AUTO_PK_SUPPORT table doesn't exist. From Eclipse
    > Database explorer
    > I connected to my local derby testdb an I can verify that all
    > tables exists.
    > Then I tried to change PK Generation strategy from Default
    > to "Database-Generated" and recreate database and then I have next
    > error:
    >
    > ================================================
    > ...
    > INFO QueryLogger: +++ Connecting: SUCCESS.
    > INFO QueryLogger: *** error.
    > java.sql.SQLSyntaxErrorException: Table/View 'ARTIST' does not exist.
    > ================================================
    >
    > So it seems that all tables exists, I successfully connect to derby
    > database
    > but I can't query any table.
    >
    > Then I tried to switch from derby to mysql 5.0 database. Everything
    > went ok I
    > succsesfully created and commited objects to database. When Cayenne
    > Modeler
    > generates DB Schema, I select "Create FK Support" but Modeler
    > dosn't generate
    > sql code for foreign keys. MySQL 5 have support for foreign keys,
    > do Modeler
    > support this?
    >
    > I am using:
    > JDK 1.6.0
    > Cayenne 1.2.3
    > Derby 10.2.2.0
    > MySQL connector 5.0.6
    > MySQL 5.0
    >
    > Regards,
    > Ivica
    >



    This archive was generated by hypermail 2.0.0 : Tue Jul 10 2007 - 14:55:56 EDT