6 Replies Latest reply on Aug 22, 2006 12:32 PM by Tim Fox

    Invalid column index problem

    Tim Fox Master

      Hi everyone-

      I have just been on holiday pretty much all last week so sorry for the late reply to this.

      As you seem to have discovered now, the invalid column index exceptions are because the the database schema has very slightly changed betweehn CR3 and CR4, so when upgrading you will need to:

      a) drop all your pre CR4 messaging tables

      b) make sure you redeploy the new persistence manager mbean config from the distro as is appropriate for the datbase you are using.

      It seems I forgot to inform Ovidiu about this before I went away, so please accept my apologies for that. :)

        • 1. Re: Invalid column index problem
          David Howe Newbie

          Other differences that we have noticed from CR3 are:

          - You need to have the section in your datasource or you will get the following exception on startup:

          10:56:00,546 WARN [ServiceController] Problem starting service jboss.ejb:persis
          tencePolicy=database,service=EJBTimerService
          java.lang.IllegalStateException: Cannot find datasource meta data: jboss.jdbc:da
          tasource=DefaultDS,service=metadata
          


          - The installer now creates the configuration "messaging" instead of "standalone-messaging". This was giving us grief, as we had an automated target in our application build script to configure JBoss with our queues and datasource.

          - The JBoss messaging deployment is now named "jboss-messaging.sar" instead of "jboss-messaging"

          • 2. Re: Invalid column index problem
            David Howe Newbie

            Lost the tag in my first point above. It should read "You need to have the metadata section..."

            • 3. Re: Invalid column index problem
              Ovidiu Feodorov Master

               


              Other differences that we have noticed from CR3 are:
              - You need to have the section in your datasource or you will get the following exception on startup:


              The Messaging installation script does not modify in any way your datasource definition. It only assumes that "java:/DefaultDS" is deployed and running.

              The way the installation script works is it looks at a "default" configuration and it creates a "messaging" configuration based on it, applying whatever changes are needed by Messaging. So if you have problems with datasource deployment, it's probably because your "default" configuration has the same problems as well.


              - The installer now creates the configuration "messaging" instead of "standalone-messaging". This was giving us grief, as we had an automated target in our application build script to configure JBoss with our queues and datasource.


              The installer always created a "messaging" configuration by default. If you want a "standalone" configuration, then you need to run it this way:

              ant -f release-admin.xml standalone
              


              Nothing has changed between CR3 and CR4 here. You probably must have been using the installation script differently with CR3.


              - The JBoss messaging deployment is now named "jboss-messaging.sar" instead of "jboss-messaging"


              See above. Messaging deployment directory was always named "jboss-messaging.sar" for a regular installation and "jboss-messaging" for a standalone installation. Nothing changed here, as well.

              You probably must have doing a standalone installation with CR3 and switched to a regular installation with CR4.




              • 4. Re: Invalid column index problem
                David Howe Newbie

                Thanks Ovidiu. We'd been having other problems from CR3 to CR4 and so went back to square one with the installation guide to make sure that we hadn't missed anything in the automated build that we do. We did change from using the standalone target to the install target, so that's where the difference came from. I'll change back to standalone. Sorry for the confusion.

                • 5. Re: Invalid column index problem
                  mskonda Apprentice

                   

                  "timfox" wrote:

                  ..because the the database schema has very slightly changed betweehn CR3 and CR4,


                  Tim, what is the change? I am comparing my sybase-persistence file (CR2) with CR4 and seems no difference- unles I am missing a tiny bit.

                  Thanks
                  Madhu

                  • 6. Re: Invalid column index problem
                    Tim Fox Master

                    Madhu-

                    There are many differences between the CR2 and CR4 sybase configs, here is a diff:

                    Compare: (<)C:\dev\messaging-old\trunk\src\etc\server\default\deploy\sybase-persistence-service.xml (7996 bytes)
                     with: (>)C:\dev\jboss-messaging-1.0.1.CR2\examples\config\sybase-persistence-service.xml (7836 bytes)
                    
                    11c11
                    < $Id: sybase-persistence-service.xml 1222 2006-08-10 18:51:44Z ovidiu.feodorov@jboss.com $
                    ---
                    > $Id: sybase-persistence-service.xml,v 1.1 2006/05/08 21:32:09 ovidiu Exp $
                    44,49c44,51
                    < LOAD_REF_INFO=SELECT MESSAGEID, ORD, DELIVERYCOUNT, RELIABLE FROM JMS_MESSAGE_REFERENCE WHERE CHANNELID=? AND STATE <> '+' AND LOADED = 'N' AND ORD BETWEEN ? AND ? ORDER BY ORD
                    < SELECT_COUNT_REFS=SELECT COUNT(MESSAGEID) FROM JMS_MESSAGE_REFERENCE WHERE CHANNELID=? AND STATE <> '+' AND LOADED='N'
                    < UPDATE_RELIABLE_REFS=UPDATE JMS_MESSAGE_REFERENCE SET LOADED='Y' WHERE ORD BETWEEN ? AND ? AND CHANNELID=? AND RELIABLE='Y' AND STATE <> '+'
                    < UPDATE_RELIABLE_REFS_NOT_LOADED=UPDATE JMS_MESSAGE_REFERENCE SET LOADED='N' WHERE CHANNELID=?
                    < SELECT_MIN_ORDERING=SELECT MIN(ORD) FROM JMS_MESSAGE_REFERENCE WHERE CHANNELID=? AND STATE <> '+' AND LOADED = 'N'
                    < DELETE_UNRELIABLE_REFS=DELETE FROM JMS_MESSAGE_REFERENCE WHERE RELIABLE = 'N'
                    ---
                    > LOAD_REF_INFO=SELECT MESSAGEID, ORD, DELIVERYCOUNT FROM JMS_MESSAGE_REFERENCE WHERE CHANNELID=? AND STATE <> '+' AND LOADED = 'N' AND ORD BETWEEN ? AND ? ORDER BY ORD
                    > SELECT_COUNT_REFS=SELECT COUNT(MESSAGEID) FROM JMS_MESSAGE_REFERENCE WHERE CHANNELID=? AND STATE <> '+' AND LOADED='N'
                    > UPDATE_RELIABLE_REFS=UPDATE JMS_MESSAGE_REFERENCE SET LOADED='Y' WHERE ORD BETWEEN ? AND ? AND CHANNELID=? AND RELIABLE='Y' AND STATE <> '+'
                    > DELETE_CHANNEL_MESSAGE_REFS=DELETE FROM JMS_MESSAGE_REFERENCE WHERE CHANNELID=?
                    > REMOVE_ALL_NONRELIABLE_REFS=DELETE FROM JMS_MESSAGE_REFERENCE WHERE RELIABLE='N'
                    > UPDATE_ALL_RELIABLE_REFS=UPDATE JMS_MESSAGE_REFERENCE SET LOADED='N'
                    > SELECT_MIN_ORDERING=SELECT MIN(ORD) FROM JMS_MESSAGE_REFERENCE WHERE CHANNELID=? AND STATE <> '+' AND LOADED = 'N'
                    > DELETE_NON_DURABLE=DELETE FROM JMS_MESSAGE_REFERENCE WHERE CHANNELID NOT IN (SELECT ID FROM JMS_CHANNEL_MAPPING)
                    53,56c55,58
                    < UPDATE_MESSAGE_CHANNELCOUNT=UPDATE JMS_MESSAGE SET CHANNELCOUNT=? WHERE MESSAGEID=?
                    < DELETE_MESSAGE=DELETE FROM JMS_MESSAGE WHERE MESSAGEID=? MESSAGEID_COLUMN=MESSAGEID
                    < UPDATE_UNRELIABLE_CHANNELCOUNT=UPDATE JMS_MESSAGE M SET M.CHANNELCOUNT = M.CHANNELCOUNT - 1 WHERE M.MESSAGEID IN (SELECT MR.MESSAGEID FROM JMS_MESSAGE_REFERENCE MR WHERE MR.RELIABLE = 'N' AND MR.CHANNELID = ?)
                    < DELETE_UNREFFED_MESSAGES=DELETE FROM JMS_MESSAGE WHERE CHANNELCOUNT = 0
                    ---
                    > UPDATE_MESSAGE_CHANNEL_COUNT=UPDATE JMS_MESSAGE SET CHANNELCOUNT=? WHERE MESSAGEID=?
                    > DELETE_MESSAGE=DELETE FROM JMS_MESSAGE WHERE MESSAGEID=? MESSAGE_ID_COLUMN=MESSAGEID
                    > REMOVE_ALL_NONRELIABLE_MSGS=DELETE FROM JMS_MESSAGE WHERE RELIABLE='N'
                    > DELETE_ALL_MESSAGES=DELETE FROM JMS_MESSAGE
                    67d69
                    < SELECT_ALL_CHANNELS=SELECT DISTINCT(CHANNELID) FROM JMS_MESSAGE_REFERENCE
                    81,83c82,83
                    < <attribute name="CreateTablesOnStartup">true</attribute>
                    <
                    < <attribute name="SqlProperties"><![CDATA[
                    ---
                    >
                    > <attribute name="SqlProperties"><![CDATA[
                    


                    You must be looking at the wrong files