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/
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.
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)
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?
@CHI-Hospital: Yes, it appears we are in the same boat. My server is a "virgin" Windows 2008 R2 box with 64-bit ColdFusion 9.01. This is NOT an upgrade from a previous version of ColdFusion; I didn't preinstall any 32-bit Java engines or any other applications before installing IIS and ColdFusion. So right out of the box, I'm getting this "architecture mismatch" problem. It's as if the 64-bit ColdFusion installer was incorrectly bundled with some 32-bit component (like JDBC or JRUN, etc.)
@charlie_arehart: Your point is well taken about using JDBC drivers and that is definitely a possibility for some of our data sources, but this server that I'm working on is a test to see what works and what doesn't. Having the option of using ODBC drivers is important to my department and quite frankly, this stuff should world. ODBC is an old reliable standard that's been around for almost two decades.
Now when I create a test data source using the supposedly native Microsoft Access driver in the ColdFusion Administrator, isn't that really just an alias for creating an ODBC System DSN? After creating a "Microsoft Access" data source, I get an "unable to update the NT registry. Variable DRIVERPATH is undefined" error and when I verify the data source, I get the same old "The specified DSN contains an architecture mismatch between the Driver and Application" error. Checking the ODBC Administrator, I see that ColdFusion has created a System DSN by that name, but with the 32-bit Access ODBC driver, so again, I get an "architecture mismatch" error and the data source is unusable.
So as it stands now, this 64-bit server is pretty useless to me and can't connect to anything. (We're running 32-bit ColdFusion 9 on a different Windows 2003 32-bit and all is happy.) -Joe
As extra info (might be useful), when I look at all processes under the Windows Task Manager, I see thatjrun.exe and jrunsvc.exe are 64-bit, but swagent.exe*32, swsoc.exe*32, and swstrtr.exe*32 (the DataDirect SequelLink services) are all 32-bit executables. (The Verity services are also 32-bit.) So if I have a 64-bit web server service (ColdFusion) that gets installed with a 32-bit database connectivity engine, yet tries to enforce using only 64-bit data sources, isn't this an inherent problem or bug in what the Adobe installer put on this machine?
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:
There's also a little more that may help at the bottom of this:
MS also covers the topic here:
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.
Providing CF troubleshooting services at carehart.org/consulting
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.
@ 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.
Nope, no knowledge of any Oracle details on this. Sorry.
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.
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 - 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.
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?
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.
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.
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!
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?
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
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:
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).
>> 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
Fair enough. Thanks.
1 person found this helpful
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
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