2012-02-09 19 views
11

Tôi đã googled trong nhiều giờ ngay bây giờ.PHP ODBC connect() để truy cập - kiến ​​trúc không phù hợp

Tôi đã đọc vô số bài viết như: Is there a Windows 7 ODBC driver for Access?

Tôi đã cố gắng sử dụng cả các quản trị ODBC - và đã quản lý để thêm thành công có hệ thống DSN cho cả hai: Cơ sở dữ liệu

  • Microsoft Access
  • Microsoft làm Cơ sở dữ liệu Access

Khi tôi cố gắng kết nối với Access DB được lưu trữ cục bộ:

odbc_connect('Aquarius2', '', ''); 

tôi nhận được lỗi sau (s):

odbc_connect(): SQL error: [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application, SQL state IM014 in SQLConnect in C:\export\export.php on line 3

Simple kịch bản đã cố gắng cài đặt các trình điều khiển truy cập mới nhất - Aquarius2 là tên của DSN của tôi vẫn bị lỗi.

Tôi hết ý tưởng - tôi đang thiếu gì?

Kính trọng, Alex

+2

bạn đang sử dụng dsn 32 bit hay 64 bit? –

Trả lời

17

Bạn đang cố gắng sử dụng một ứng dụng 64 bit với một trình điều khiển ODBC 32 bit hoặc ngược lại. Nhìn vào ODBC on 64-bit Windows Platforms.

Bạn cần xác định xem ứng dụng PHP của bạn có 64 bit hay 32 bit trước không.

Sau đó, khi bạn đã chắc chắn rằng bạn cần khởi động đúng quản trị ODBC - có 2 trong số đó, một cho 32 bit và một cho 64 bit. Quản trị viên ODBC 64 bit nằm trong các công cụ Quản trị, bảng điều khiển và bit 32 bit nằm trong số %windir\syswow64\odbcad32.exe.

Khi bạn đã kết hợp kiến ​​trúc ứng dụng của mình với đúng quản trị viên ODBC, bạn cần tạo DSN hệ thống. Nếu bạn không thể tìm thấy trình điều khiển MS Access trong quản trị viên, bạn sẽ cần tải xuống một trình điều khiển cho kiến ​​trúc đó. Tôi không chắc chắn nếu có một trình điều khiển MS Access ODBC 64 bit; nếu không có, bạn sẽ phải thay đổi kiến ​​trúc ứng dụng của mình.

The article I referenced có thêm thông tin.

+0

Tôi nghĩ rằng tôi đã làm tất cả những điều đó và rõ ràng rằng nó là một số loại 32/64 bit không phù hợp nhưng tôi không chắc chắn lý do tại sao. –

+0

Tôi không biết cách lặp lại câu trả lời của mình để làm cho câu trả lời rõ ràng hơn - xin lỗi. – bohica

+0

Ứng dụng đang sử dụng PHP và nó là odbc_x() API - chạy phpinfo() dường như cho tôi biết API ODBC là win32. –

4

Một lưu ý khác: nếu bạn đã cài đặt WampServer 64 bit, nó sẽ cài đặt mọi thứ 64 bit - Apache, MySQL, PHP. Nếu bạn muốn một PHP 32-bit có xung quanh, hãy vào PHP downloads page và chọn một trong các bản phát hành 'win32'. Và đừng quên thay đổi đường dẫn php của bạn khi bạn chạy ứng dụng của bạn! Cộng này thiết lập quản trị viên ODBC 32 bit - %windir\syswow64\odbcad32.exe - và bạn nên làm tốt.

+0

Điều kỳ lạ là, mặc dù tôi đã cài đặt một phiên bản 64bit của wampServer, hằng số PHP_INT_MAX bằng 2^31-1, vì vậy tôi nghĩ PHP là 32 bit bằng cách nào đó. Tải xuống wampserver 32 bit ngay bây giờ và giữ ngón tay của tôi vượt qua. – Mchl

+0

Có. Nó đã làm việc! Mặc dù chuyển đổi các phiên bản wampserver là một chút của một PITA. – Mchl

Các vấn đề liên quan