Skip navigation
Currently Being Moderated

64-bit ColdFusion 9 ODBC drivers confusion? (architecture mismatch)

Aug 6, 2010 10:40 AM

Hi all - I'm having problems setting up ColdFusion ODBC sources in a pure 64-bit environment. Server specs:

  • Windows 2008 R2 (64-bit)
  • ColdFusion 9.01 (251028) Enterprise, 64-bit

 

I have 64-bit ODBC drivers for all of my database sources:

 

  • 64-bit SQL Server (bundled with Windows 2008 R2)
  • 64-bit MS Access 2010 (with 64-bit Access ODBC driver from Office 2010 64-bit install)
  • 64-bit ODBC drivers for Sybase SQL Anywhere 11 (from SyBase)

 

Using the (64-bit) ODBC Administrator, I can create system DSNs and they test out perfectly. (From my test Access database, I can use these DSNs to pull data from SQL Server and from SQL Anywhere.) Since this is working, I'm pretty confident that my drivers are all 64-bit and that everything is happy.

 

Now for ColdFusion...

When I try to create a new data source in the ColdFusion Administrator and I use, the "ODBC Socket" option, I am presented with a drop-down list of my 64-bit ODBC system DSNs (good!), but whenever I select one and save, I invariably get an "architecture mismatch" error like below:

 

Connection verification failed for data source: MSSQLtestDatabase
java.sql.SQLException: [Macromedia][SequeLink JDBC Driver][ODBC  Socket]internal error: The specified DSN contains an architecture mismatch  between the Driver and Application
The root cause was that:  java.sql.SQLException: [Macromedia][SequeLink JDBC Driver][ODBC Socket]internal  error: The specified DSN contains an architecture mismatch between the Driver  and Application

 

I am well aware that "architecture mismatch" errors mean that you're trying to mix 32-bit drivers with a 64-bit application (or vice-versa), but I'm pretty sure that everything in my environment is 64-bit.

 

As a further test, I created a few 32-bit ODBC system DSNs and the ColdFusion Administrator does not present them as options in the drop-down list of ODBC DSNs (good!). So, it seems like the Administrator is smart enough to show only the 64-bit DSNs, but whenever you try to connect to one, it gets confused and kicks up an "architecture mismatch" error.

 

So is there any obvious configuration error here? Is there a 32-bit subcomponent to ColdFusion (JDBC, etc.) that's confusing things? (I ran the ColdFusion_9_WWE_win64.exe setup downloaded from Adobe's site.) Is 64-bit ColdFusion ready for prime time? Any suggestions would be greatly appreciated. Thanks, Joe

 
Replies
  • Currently Being Moderated
    Aug 6, 2010 11:20 AM   in reply to josieb

    josieb wrote:

     

    Is there a 32-bit subcomponent to ColdFusion (JDBC, etc.) that's confusing things?

     

    There just might be.  As far as I recall, these 64 bit drivers, particualarly the 64 bit Access driver, did not exist when ColdFusion 64 bit came out.  You may be using a piece of ColdFusion that the Adobe engineers had nothing to test against when they where building the thing.

     

    But only Adobe could answer that for you.  You might tryin posting this to someplace where they hand out.  I know Sarge is a regular member of the House of Fusion list.  http://www.houseoffusion.com/groups/cf-talk/

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 6, 2010 1:50 PM   in reply to ian@cdpr

    Well, before offering another thought on things, a key question needs to be asked:

     

    Why are you using ODBC at all? You're on CF Enterprise. There are native drivers for SQL Server and Sybase, and a dedicated driver for Access.

     

    I do realize that some people started using them back in the day (CF 3, 4, or 5) and maybe never bothered to stop using them when JDBC drivers came out with CF 6. Or perhaps you recently jumped from 5 or earlier to 9. So the first thought is: don't use ODBC if you don't have to. Is there anything, given that, which would still compel you to press on? (If so, I have more thoughts for you below.)

     

    But let me digress for a moment and say, for the benefit of someone else reading this someday, who may be on CF Standard: even in CF standard, there are at least dedicated (non ODBC) drivers for SQL Server and Access. As for Sybase, you could perhaps still want to try to connect to it using ODBC, but I'll note that one could get a free JDBC driver for Sybase (such as at http://jtds.sourceforge.net/) and use the "Other" driver type when setting up the datasource in CF.

     

    Back to your problem at hand, if for some reason you want to press on, besides what Ian offers, I'll ask this: did you by any chance have CF 8 (32 bit) installed on the box before upgrading to CF 9 64 bit? It's just a guess, but I could see that if the ODBC services remained from the old install, it could cause confusion.

     

    /charlie

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 9, 2010 9:49 AM   in reply to josieb

    This is interesting and timely.  I'm having the exact same issue, but with Oracle 11g drivers.  We are setting up a new web server:

     

    Windows 2008 R2 (64-bit)

    ColdFusion 9,0,0,251028 

     

    We installed CF9 on a Windows 20080 server, IIS 7.5.  Our DBA installed the Oracle 11g drivers, but we forgot to specify 64 bit.  He first installed 32 bit drivers, which we could not see in the CF administrator (to be expected).  We requested a reinstall of the 64 bit drivers.  We could then see the DSN in the ODBC DSN dropdown.

     

    However, when we select it and create a datasource, we get the following error:

     

    Connection verification failed for data source: XXXXXXX
    java.sql.SQLException: [Macromedia][SequeLink JDBC Driver][ODBC Socket]internal error: The specified DSN contains an architecture mismatch between the Driver and Application
    The root cause was that: java.sql.SQLException: [Macromedia][SequeLink JDBC Driver][ODBC Socket]internal error: The specified DSN contains an architecture mismatch between the Driver and Application

     

    During troubleshooting, our DBA reinstalled the 64 bit drivers.  He also contacted Oracle support and verified he was installing them correctly.

     

    I have the same question as "joseib". The error hints at a 32/64 bit mismatch, but it seems this shouldn't be the case here?

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 11, 2010 4:54 PM   in reply to josieb

    OK, just did a little Googling for you about this, Josie (and others). There seem to be a few alternative solutions, each with pros and cons.

     

    The easiest, though, may be to simply use the 32-bit (instead of default 64bit) ODBC control panel, and then again use the MS Access driver in the CF Admin (not the ODBC socket one) to point to that. This is discussed here:

     

    http://www.cfexecute.com/post/access-dsns-in-64bit-coldfusion

     

    There's also a little more that may help at the bottom of this:

     

    http://www.zidsoft.com/x64.html

     

    MS also covers the topic here:

     

    http://msdn.microsoft.com/en-us/library/ms712362%28VS.85%29.aspx

     

    Other CF-specific solutions include:

    - run CF instead in 32-bit mode (even on the 64-bit machine). See discussion at http://www.houseoffusion.com/groups/cf-talk/thread.cfm/threadid:60467

    - if you have 2 boxes available, you could run CF in 32-bit mode on one box (just for providing access to the 32-bit Access driver), then "proxy" the DSN setup from the 64-bit CF machine to access the DSN on the 32-bit machine (See http://www.coldfusionmuse.com/index.cfm/2009/4/7/MS.Access.Proxy)

    - get an alternative jdbc driver for Access (HXTT), mentioned in the threads above

    - did you happen to try the "microsoft access with Unicode" driver option in the CFAdmin? That is quite different from the one that is not "with Unicode", so worth a try if nothing else works for you.

     

    Let us know if any of these suit you.

     

    Also, I appreciate the annoyance of those who would think this should "just work" without workarounds. I think I have clarification there.

     

    First, the CF9 System Requirements page is unclear on this. While its systems support matrix lists 32 and 64 but windows (among others), those don't list what DBs are supported on each. Instead, there's a database support matrix at the bottom, which does indicate that Access is supported, but it doesn't break it down per OS, let alone bit-level of each OS.

     

    But I just found a clarificaiton in a devnet article (by an Adobe engineer) that does seem to put the nail in the coffin:

     

    "Most of the functionality and features of ColdFusion run just fine on 64-bit platforms, however, certain features like ColdFusion COM interoperability, ColdFusion Delphi interoperability, and Microsoft Access database connectivity do not work on a ColdFusion 64-bit platform. A few other features, such as ColdFusion .NET integration services and database drivers currently run in 32-bit mode." (http://www.adobe.com/devnet/coldfusion/articles/64_bit_print.html)

     

    I think most haven't noticed this or made much of it simply because Access has been eschewed by so many for so long.

     

    /charlie

    Providing CF troubleshooting services at carehart.org/consulting

    charlie@carehart.org

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 26, 2010 6:43 AM   in reply to josieb

    I gave up a year ago trying to get CF9 64bit to work with my Access db..lol Not sure why CF stopped supporting Access drivers for their 64bit versions(I had CF8 64bit and it worked fine) but I finally just reinstalled CF9 32bit. Of course now I am using MySQL and the default driver in CF9, so I guess it wouldnt matter now.

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 26, 2010 6:53 AM   in reply to josieb


    @ teedoffnewbie : We gave up on transferring our Access backend apps too (thankfully only a few of these left). We are putting them on a "legacy" 2003 server until we can recode them over to SQL.

     

    @ charlie arehart : Have you heard anything specific to Oracle and this 32 bit / 64 bit issue?

     

    I have a support ticket in with Adobe on this (Oracle specifically), but haven't heard anything yet.

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 27, 2010 9:05 AM   in reply to CHI-Hospital

    Nope, no knowledge of any Oracle details on this. Sorry.

     

    /charlie

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 1, 2010 12:28 PM   in reply to josieb

    From Adobe support:

     

    "Engineering has let us know that ODBC service does not support 64 bit drivers and that’s the reason your CF ODBC datasources are not working with 64 bit Oracle drivers. "

     

    They recommend JDBC.

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 2, 2010 7:59 PM   in reply to CHI-Hospital

    Sure, JDBC is an option, and I had pointed out the HXTT driver in my earlier note.

     

    But I also pointed out there that people have solved this problem simply by also implementing a 32-bit datasource. I offered several links explaining that.

     

    Did you try it? It's worked for many.

     

    For those who missed it, it's here: http://forums.adobe.com/message/3101486#3046213

     

    /charlie

     
    |
    Mark as:
  • Currently Being Moderated
    Nov 3, 2010 12:18 PM   in reply to Charlie Arehart

    @Charlie - I know this topic is now a couple of months old, but with the research you did, and maybe experienced:

     

    I am thinking of putting  together a server with:

     

    Windows Web - (there should be a 64-bit flavor of this)

    CF 9 Enterprise (64 bit)

    MS SQL  - (I imagine there should be a 64 bit version)

     

    Do you see any issues with this config?

     

    I don't plan to use any MS Access programs, so there is no concern there.

     

    Thanks for your help.

     

     

    Doug

     
    |
    Mark as:
  • Currently Being Moderated
    Nov 3, 2010 12:57 PM   in reply to mrdimn

    Well, would you still be trying to use ODBC then? If not, I'd wonder if you even need to use a new machine or setup.

     

    As for "issues with this config", it kind of depends on what you're asking. For instance, if you're running SQL Server on the same box as CF, that's risky in that SQL Server could steal all the memory and cause CF to fail with "outofmemory: out of swap space" errors. You would want to configure SQL Server (in its enterprise manager, in the properties for the server) to lower the max memory (which is essentially "unlimited" by default), so that both servers could co-exist on a single box.

     

    Does that help?

     

    /charlie

     
    |
    Mark as:
  • Currently Being Moderated
    Nov 3, 2010 1:44 PM   in reply to Charlie Arehart

    Hi Charlie -

     

    Thanks for the info.As for using ODBC, do the JDBC drivers offer better performance?

     

    The reason that I am looking for a new machine & software is for backup of the primary machine which is currently being CoLoed.

     

    My boss wants something in-house just as a backup, and only when needed.

     

    Thanks for the tip on the SQL server stealing memory.

    It looks like a more optimal solution might be to have 2 boxes running.

     

    But if he doesn't go for that, then I will lower the memory requirements for SQL.

     

    Thanks,


    Doug

     
    |
    Mark as:
  • Currently Being Moderated
    Nov 3, 2010 2:05 PM   in reply to mrdimn

    Well sure, the JDBC drivers should be better, yes. With ODBC (since CFMX 6), you're going through an ODBC-JDBC bridge, so if you can skip that, it will be better. It's really only there for backward compatibility for those who for some reason have no JDBC alternative they can use. And Adobe even included a JDBC driver for MS Access, so that one need not use ODBC even for that.

     

    I'll note that this sort of stuff is discussed in the CF docs, in the "Admin and Config Manual". No offense intended in mentioning that. It's just that many never even notice that it exists.

     

    /charlie

     
    |
    Mark as:
  • Currently Being Moderated
    Nov 3, 2010 2:48 PM   in reply to Charlie Arehart

    Charlie -

     

    No offense taken.

     

    I appreciate any and all info you provide.

     

    I haven't looked over the detailed documentation in years.

     

    It seems like the positions I am in, are more the "jump in and go" methodology. ;-)

    And my spare time I try not to look at the CF manuals unless I have to!

     

    Thanks again!

     

    Doug

     
    |
    Mark as:
  • Currently Being Moderated
    Nov 3, 2010 2:57 PM   in reply to Charlie Arehart

    Charlie -

     

    I was just looking over the Data Sources screen and was curious, are the ones listed at the top of the drop down -

    are those the JDBC drivers?

     

    thanks

     

    Doug

     

     

     

     

     

     

     
    |
    Mark as:
  • Dave Watts
    747 posts
    Mar 11, 2003
    Currently Being Moderated
    Nov 3, 2010 7:46 PM   in reply to mrdimn

    They're all JDBC drivers. CF can only use JDBC drivers. Most are "pure" Type 4 JDBC drivers, which means that they only include Java code. Others are "impure" - they include something else: ODBC or some other native code. Generally, Type 4 JDBC drivers will provide better performance, as they involve fewer levels of indirection. The only drivers that aren't Type 4 JDBC drivers are the two Access drivers and the "ODBC Socket" driver, if I recall correctly.

     

    Dave Watts, CTO, Fig Leaf Software

    http://www.figleaf.com/

    http://training.figleaf.com/

     

    Fig Leaf Software is a Veteran-Owned Small Business (VOSB) on

    GSA Schedule, and provides the highest caliber vendor-authorized

    instruction at our training centers, online, or onsite.

     

    Read this before you post:

    http://forums.adobe.com/thread/607238

     
    |
    Mark as:
  • Currently Being Moderated
    Nov 3, 2010 8:05 PM   in reply to Dave Watts

    (As it is not the easiest thing to find .. ) there is a nice breakdown of the driver types here

     

    http://help.adobe.com/en_US/ColdFusion/9.0/Admin/WSc3ff6d0ea7785946117 2e0811cbf3639b1-7ffd.html

     

    -Leigh

     
    |
    Mark as:
  • Currently Being Moderated
    Nov 5, 2010 6:04 AM   in reply to -==cfSearching==-

    Well, that's a page within the Admin and Config manual that I pointed to earlier in the thread. But sure, it's not a bad idea to point to the specific page. I'm just reasserting the value of that CF manual (and the others).

     

    /charlie

     
    |
    Mark as:
  • Currently Being Moderated
    Nov 5, 2010 7:42 AM   in reply to Charlie Arehart

    >> I'm just reasserting the value of that CF manual (and the others)

     

    Absolutely. But having fallen into the "did not know it existed for years ..." category, I have since found that particular breakdown very useful. So I guess I figured a preview/affirmation of the jewels in the documentation you described could not hurt

     

    -Leigh

     
    |
    Mark as:
  • Currently Being Moderated
    Nov 5, 2010 10:02 AM   in reply to -==cfSearching==-

    Fair enough. Thanks.

     

    /charlie

     
    |
    Mark as:
  • Currently Being Moderated
    Jun 7, 2011 7:47 AM   in reply to josieb

    Well, perform the following seem to work for me.

     

    For Microsoft Access DB.

     

    1. Load %windir%\sysWOW64\odbcad32.exe

    2. Create a new Microsoft Access Datasource and give it a name (you'll need it name later).

    3. Go to CF Admin ->Datasource page.

    4. Create a new Microsoft Access Datasource (using the datasource name from step 2).

    5. Save changes and ignore the error message.

    6. Verify connection and you should not see that stupid architecture mismatch error message.

    7. Notice CF will still create a datasource in the 64 bits odbcad32.exe

     
    |
    Mark as:
  • Currently Being Moderated
    Feb 7, 2012 5:02 AM   in reply to josieb

    HI,

    I was looking for a JDBC driver for one of my project but find out the right one in each once there were some problems while connecting to  my database then i got one JDBC driver here http://www.datadirect.com/products/jdbc/index.html and it worked for me.You can also go there and download for free trial.Just try it.

     

     

     

    You can go for more drivers her for downloads ODBC driver

    JDBC driver download

    ODBC driver download

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points