Указанный DSN содержит ошибку несоответствия архитектуры.

Я получил эту ошибку:

Указанный DSN содержит несоответствие архитектуры между драйвером и приложением

при попытке подключения к базе данных с использованием NetBeans и языка программирования Java

Я использую Microsoft Access 2010 и моя система работает на 64-битной Windows 7.

Как мне решить эту проблему? Спасибо всем.

1 ответ

Это сообщение появляется при следующих обстоятельствах:

  • у вас установлен Access Database Engine (также известный как "ACE"),
  • вы создаете ODBC DSN для подключения к базе данных и
  • ваш код Java работает в JVM (виртуальная машина Java), чья "битность" отличается от установленной версии ACE.

Например,

  1. Вы можете установить 32-битную версию ACE и пытаться подключиться из кода Java, работающего в 64-битной JVM, или

  2. вы могли бы установить 64-битную версию ACE и пытаться подключиться из кода Java, работающего в 32-битной JVM.

Если вы действительно хотите использовать мост JDBC-ODBC, решение состоит в том, чтобы либо переключиться на "другую" версию ACE (т. Е. Переключиться с 32-разрядной на 64-разрядную версию или наоборот), либо запустить код Java под JVM с той же "битовой разрядностью", что и установленная версия ACE.

(Обратите внимание, что если у вас установлен Office, то "переключение на 64-разрядный ACE" действительно означает "переключение на 64-разрядный Office". Вы не можете "смешивать и сопоставлять" 32-разрядные и 64-разрядные компоненты Office.)

Однако теперь, когда мост JDBC-ODBC был удален из Java 8, следует рассмотреть возможность использования драйвера JDBC UCanAccess. Это чистая реализация Java, которая не использует Access ODBC для манипулирования базой данных, поэтому она работает как с 32-разрядными, так и с 64-разрядными JVM на всех платформах, на которых работает Java (т. Е. Не только в Windows). Для получения дополнительной информации см.

Управление базой данных Access из Java без ODBC

Другие вопросы по тегам