ODBC có hoạt động với MySQL không?

MySQL cung cấp hỗ trợ cho ODBC bằng chương trình MyODBC. Phần này sẽ hướng dẫn bạn cách cài đặt MyODBC và cách sử dụng nó. Tại đây, bạn cũng sẽ tìm thấy danh sách các chương trình phổ biến được biết là hoạt động với MyODBC

MyODBC là một ODBC 32-bit (2. 50) trình điều khiển cấp 0 (với các tính năng cấp 1 và cấp 2) để kết nối ứng dụng nhận biết ODBC với MySQL. MyODBC hoạt động trên Windows 9x/Me/NT/2000/XP và hầu hết các nền tảng Unix

MyODBC thuộc phạm vi công cộng và bạn có thể tìm thấy phiên bản mới nhất tại http. //www. mysql. com/tải xuống/api-myodbc. html

Nếu bạn gặp sự cố với MyODBC và chương trình của bạn cũng hoạt động với OLEDB, bạn nên thử trình điều khiển OLEDB

Thông thường bạn chỉ cần cài đặt MyODBC trên máy Windows. Bạn chỉ cần MyODBC cho Unix nếu bạn có một chương trình như ColdFusion đang chạy trên máy Unix và sử dụng ODBC để kết nối với cơ sở dữ liệu

Nếu bạn muốn cài đặt MyODBC trên hộp Unix, bạn cũng cần có trình quản lý ODBC. MyODBC được biết là hoạt động với hầu hết các trình quản lý Unix ODBC. Thấy

Để cài đặt MyODBC trên Windows, bạn nên tải xuống tệp MyODBC

ip hostname
0 thích hợp, giải nén nó bằng WinZIP hoặc một số chương trình tương tự và chạy tệp
ip hostname
1

Trên Windows/NT/XP, bạn có thể gặp lỗi sau khi cài đặt MyODBC

An error occurred while copying C:\WINDOWS\SYSTEM\MFC30.DLL. Restart
Windows and try installing again (before running any applications which
use ODBC)

Vấn đề trong trường hợp này là một số chương trình khác đang sử dụng ODBC và do cách Windows được thiết kế, trong trường hợp này bạn không thể cài đặt trình điều khiển ODBC mới bằng chương trình thiết lập ODBC của Microsoft. Trong hầu hết các trường hợp, bạn có thể tiếp tục bằng cách chỉ cần nhấn Bỏ qua để sao chép phần còn lại của tệp MyODBC và quá trình cài đặt cuối cùng vẫn hoạt động. Nếu cách này không hiệu quả, giải pháp là khởi động lại máy tính của bạn ở “chế độ an toàn” (chọn chế độ này bằng cách nhấn F8 ngay trước khi máy của bạn khởi động Windows trong khi khởi động lại), cài đặt MyODBC và khởi động lại về chế độ bình thường

  • Để tạo kết nối với hộp Unix từ hộp Windows, với ứng dụng ODBC (ứng dụng không hỗ trợ MySQL nguyên bản), trước tiên bạn phải cài đặt MyODBC trên máy Windows

  • Người dùng và máy Windows phải có quyền truy cập vào máy chủ MySQL trên máy Unix. Điều này được thiết lập với lệnh GRANT. Thấy

  • Bạn phải tạo mục nhập ODBC DSN như sau

    • Mở Control Panel trên máy Windows

    • Bấm đúp vào biểu tượng Nguồn dữ liệu ODBC 32-bit

    • Nhấp vào tab Người dùng DSN

    • Nhấp vào nút Thêm

    • Chọn MySQL trong màn hình Create New Data Source và nhấn nút Finish

    • Màn hình cấu hình mặc định của Trình điều khiển MySQL được hiển thị. Thấy

  • Bây giờ hãy khởi động ứng dụng của bạn và chọn trình điều khiển ODBC với DSN bạn đã chỉ định trong quản trị viên ODBC

Lưu ý rằng có các tùy chọn cấu hình khác trên màn hình của MySQL (theo dõi, không nhắc khi kết nối, v.v. ) mà bạn có thể thử nếu gặp sự cố

Cách điền vào các trường khác nhau trong chương trình quản trị viên ODBC

Có ba khả năng để chỉ định tên máy chủ trên Windows 95

  • Sử dụng địa chỉ IP của máy chủ

  • Thêm tệp

    ip hostname
    2 với thông tin sau

    ip hostname

    Ví dụ

    194.216.84.21 my_hostname
  • Định cấu hình PC để sử dụng DNS

Ví dụ về cách điền vào thiết lập ODBC

Windows DSN name:   test
Description:        This is my test database
MySql Database:     test
Server:             194.216.84.21
User:               monty
Password:           my_password
Port:

Giá trị cho trường tên Windows DSN là bất kỳ tên nào duy nhất trong thiết lập Windows ODBC của bạn

Bạn không phải chỉ định giá trị cho các trường Máy chủ, Người dùng, Mật khẩu hoặc Cổng trong màn hình thiết lập ODBC. Tuy nhiên, nếu bạn làm như vậy, các giá trị này sẽ được sử dụng làm giá trị mặc định sau này khi bạn cố gắng tạo kết nối. Bạn có tùy chọn thay đổi các giá trị tại thời điểm đó

Nếu số cổng không được cung cấp, thì cổng mặc định (3306) sẽ được sử dụng

Nếu bạn chỉ định tùy chọn Read options from C. \của tôi. cnf, khách hàng của nhóm và odbc sẽ được đọc từ tệp

ip hostname
3. Bạn có thể sử dụng tất cả các tùy chọn mà mysql_options( ) có thể sử dụng. Thấy

Kết nối thông số cho MyODBC

Người ta có thể chỉ định các tham số sau cho MyODBC trên phần [Tên máy chủ] của tệp

ip hostname
4 hoặc thông qua đối số InConnectionString trong lệnh gọi SQLDriverConnect( )

Tham số

Giá trị mặc định

Nhận xét

người sử dụng

ODBC (trên Windows)

Tên người dùng được sử dụng để kết nối với MySQL

người phục vụ

máy chủ cục bộ

Tên máy chủ của máy chủ MySQL

cơ sở dữ liệu

Cơ sở dữ liệu mặc định

quyền mua

0

Một số nguyên mà bạn có thể chỉ định cách thức hoạt động của MyODBC. Xem bảng tiếp theo

Hải cảng

3306

Cổng TCP/IP sẽ sử dụng nếu máy chủ không phải là máy chủ cục bộ

stmt

Một câu lệnh sẽ được thực thi khi kết nối với MySQL

mật khẩu mở khóa

Mật khẩu cho sự kết hợp người dùng máy chủ

ổ cắm

Ổ cắm hoặc đường ống Windows để kết nối với

Đối số tùy chọn được sử dụng để cho MyODBC biết rằng máy khách không tuân thủ 100% ODBC. Trên Windows, người ta thường đặt cờ tùy chọn bằng cách chuyển đổi các tùy chọn khác nhau trên màn hình kết nối, nhưng người ta cũng có thể đặt tùy chọn này trong đối số opton. Các tùy chọn sau đây được liệt kê theo thứ tự xuất hiện trong màn hình kết nối MyODBC

Chút

Sự miêu tả

1

Máy khách không thể xử lý việc MyODBC trả về chiều rộng thực của cột

2

Máy khách không thể xử lý rằng MySQL trả về giá trị thực của các hàng bị ảnh hưởng. Nếu cờ này được đặt, thay vào đó, MySQL sẽ trả về 'các hàng đã tìm thấy'. Người ta phải có MySQL 3. 21. 14 hoặc mới hơn để làm việc này

4

Tạo nhật ký gỡ lỗi trong c. \myodbc. đăng nhập. Điều này giống như đặt MYSQL_DEBUG=d. t. ô, c. \myodbc. đăng nhập

ip hostname
5

8

Không đặt bất kỳ giới hạn gói nào cho kết quả và tham số

16

Không nhắc đặt câu hỏi ngay cả khi tài xế muốn nhắc

32

Mô phỏng ODBC 1. 0 trình điều khiển trong một số ngữ cảnh

64

Bỏ qua việc sử dụng tên cơ sở dữ liệu trong 'cơ sở dữ liệu. bàn. cột'

128

Buộc sử dụng con trỏ trình quản lý ODBC (thử nghiệm)

256

Vô hiệu hóa việc sử dụng tìm nạp mở rộng (thử nghiệm)

512

Đệm các trường CHAR vào toàn bộ chiều dài cột

1024

SQLDescribeCol( ) sẽ trả về các tên cột đủ điều kiện

2048

Sử dụng giao thức máy chủ/máy khách nén

4096

Yêu cầu máy chủ bỏ qua khoảng trắng sau tên hàm và trước '(' (PowerBuilder cần). Điều này sẽ làm cho tất cả các từ khóa tên hàm

8192

Kết nối với các đường ống có tên với máy chủ mysqld chạy trên NT

16384

Thay đổi cột LONGLONG thành cột INT (một số ứng dụng không thể xử lý LONGLONG)

32768

Trả về 'người dùng' dưới dạng Table_qualifier và Table_owner từ SQLTables (thử nghiệm)

65536

Đọc các tham số từ máy khách và các nhóm odbc từ

ip hostname
6

131072

Thêm một số kiểm tra an toàn bổ sung (không cần thiết nhưng. )

Nếu bạn muốn có nhiều tùy chọn, bạn nên thêm các cờ này. Ví dụ: đặt tùy chọn thành 12 (4+8) cho phép bạn gỡ lỗi mà không giới hạn gói

ip hostname
7 mặc định được biên dịch để có hiệu suất tối ưu. Nếu bạn muốn gỡ lỗi MyODBC (ví dụ: để bật theo dõi), thay vào đó, bạn nên sử dụng
ip hostname
8. Để cài đặt tệp này, hãy sao chép
ip hostname
8 đè lên tệp
ip hostname
7 đã cài đặt

Cách báo cáo sự cố với MyODBC

MyODBC đã được thử nghiệm với Access, Admndemo. exe, C++-Builder, Borland Builder 4, Centura Team Developer (trước đây là Gupta SQL/Windows), ColdFusion (trên Solaris và NT với svc pack 5), Crystal Reports, DataJunction, Delphi, ERwin, Excel, iHTML, FileMaker Pro, FoxPro . 5/4. 6, SBSS, Perl DBD-ODBC, Paradox, Powerbuilder, Powerdesigner 32 bit, VC++ và Visual Basic

Nếu bạn biết bất kỳ ứng dụng nào khác hoạt động với MyODBC, vui lòng gửi thư tới myodbc@lists. mysql. com về điều này

Với một số chương trình, bạn có thể gặp lỗi như. Một người dùng khác đã sửa đổi bản ghi mà bạn đã sửa đổi. Trong hầu hết các trường hợp, điều này có thể được giải quyết bằng cách thực hiện một trong những điều sau

  • Thêm khóa chính cho bảng nếu chưa có

  • Thêm cột dấu thời gian nếu chưa có

  • Chỉ sử dụng các trường float kép. Một số chương trình có thể bị lỗi khi so sánh các số float đơn lẻ

Nếu cách này không hiệu quả, bạn nên tạo tệp theo dõi MyODBC và cố gắng tìm ra lý do tại sao mọi thứ lại sai

Các chương trình được biết là hoạt động với MyODBC

Hầu hết các chương trình sẽ hoạt động với MyODBC, nhưng đối với từng chương trình trong danh sách sau đây, chúng tôi đã tự kiểm tra hoặc nhận được xác nhận từ một số người dùng rằng nó hoạt động

Tới gần

Để Access hoạt động

  • Nếu bạn đang sử dụng Access 2000, bạn nên lấy và cài đặt phiên bản mới nhất (Phiên bản 2. 6 trở lên) Microsoft MDAC (Các thành phần truy cập dữ liệu của Microsoft) từ http. //www. Microsoft. com/dữ liệu/. Điều này sẽ sửa lỗi sau trong Access. khi bạn xuất dữ liệu sang MySQL, tên bảng và cột không được chỉ định. Một cách khác để khắc phục lỗi này là nâng cấp lên MyODBC Phiên bản 2. 50. 33 và MySQL Phiên bản 3. 23. x, cùng nhau cung cấp giải pháp thay thế cho lỗi này

    Bạn cũng nên nhận và áp dụng Microsoft Jet 4. 0 Gói dịch vụ 5 (SP5) (http. //ủng hộ. Microsoft. com/support/kb/articles/Q 239/1/14. ASP). Điều này sẽ khắc phục một số trường hợp các cột được đánh dấu là #deleted# trong Access

    Lưu ý rằng nếu bạn đang sử dụng MySQL Phiên bản 3. 22, bạn phải áp dụng bản vá MDAC và sử dụng MyODBC 2. 50. 32 hoặc 2. 50. 34 trở lên để giải quyết vấn đề này

  • Đối với tất cả các phiên bản Access, bạn nên bật cờ tùy chọn MyODBC Trả về các hàng phù hợp. Để truy cập 2. 0, bạn nên kích hoạt thêm Mô phỏng ODBC 1. 0

  • Bạn nên có dấu thời gian trong tất cả các bảng bạn muốn để có thể cập nhật. Để có tính di động tối đa DẤU THỜI GIAN(14) hoặc DẤU THỜI GIAN đơn giản được khuyến nghị thay vì các biến thể DẤU THỜI GIAN(X) khác

  • Bạn nên có một khóa chính trong bảng. Nếu không, các hàng mới hoặc được cập nhật có thể hiển thị dưới dạng #DELETED#

  • Chỉ sử dụng các trường float NHÂN ĐÔI. Truy cập không thành công khi so sánh với số float đơn lẻ. Triệu chứng thường là các hàng mới hoặc cập nhật có thể hiển thị dưới dạng #DELETED# hoặc bạn không thể tìm thấy hoặc cập nhật các hàng

  • Nếu bạn đang liên kết một bảng thông qua MyODBC, bảng có BIGINT là một trong các cột, kết quả sẽ được hiển thị dưới dạng #DELETED. Giải pháp khắc phục là

    • Có thêm một cột giả với TIMESTAMP làm kiểu dữ liệu, tốt nhất là TIMESTAMP(14)

    • Kiểm tra 'Thay đổi các cột BIGINT thành INT' trong hộp thoại tùy chọn kết nối trong ODBC DSN Administrator

    • Xóa nối kết bảng khỏi Access và tạo lại

    Nó vẫn hiển thị các bản ghi trước đó dưới dạng #DELETED#, nhưng các bản ghi mới được thêm/cập nhật sẽ được hiển thị đúng cách

  • Nếu bạn vẫn gặp lỗi Một người dùng khác đã thay đổi dữ liệu của bạn sau khi thêm cột DẤU THỜI GIAN, thủ thuật sau đây có thể giúp ích cho bạn

    Không sử dụng chế độ xem bảng dữ liệu bảng. Thay vào đó, hãy tạo biểu mẫu có các trường bạn muốn và sử dụng dạng xem biểu dữ liệu biểu mẫu đó. Bạn nên đặt thuộc tính DefaultValue cho cột TIMESTAMP thành NOW( ). Bạn nên ẩn cột DẤU THỜI GIAN khỏi chế độ xem để người dùng của bạn không bị nhầm lẫn

  • Trong một số trường hợp, Access có thể tạo các truy vấn SQL bất hợp pháp mà MySQL không thể hiểu được. Bạn có thể khắc phục điều này bằng cách chọn “Truy vấn. SQLSpecific. Pass-Through” từ menu Access

  • Truy cập trên NT sẽ báo cáo các cột BLOB là ĐỐI TƯỢNG OLE. Thay vào đó, nếu bạn muốn có các cột MEMO, bạn nên thay đổi cột thành TEXT bằng ALTER TABLE

  • Access không phải lúc nào cũng xử lý đúng các cột NGÀY. Nếu bạn gặp vấn đề với những điều này, hãy thay đổi các cột thành DATETIME

  • Nếu bạn có trong Access một cột được xác định là BYTE, thì Access sẽ cố gắng xuất cột này dưới dạng TINYINT thay vì TINYINT UNSIGNED. Điều này sẽ gây ra sự cố nếu bạn có các giá trị> 127 trong cột

THỪA NHẬN

Khi bạn mã hóa với ADO API và MyODBC, bạn cần chú ý đến một số thuộc tính mặc định không được hỗ trợ bởi máy chủ MySQL. Ví dụ: sử dụng Thuộc tính CursorLocation làm adUseServer sẽ trả về cho Thuộc tính RecordCount kết quả là -1. Để có giá trị phù hợp, bạn cần đặt thuộc tính này thành adUseClient, tương tự như waht được hiển thị trong mã VB sau

Dim myconn As New ADODB.Connection
Dim myrs As New Recordset
Dim mySQL As String
Dim myrows As Long

myconn.Open "DSN=MyODBCsample"
mySQL = "SELECT * from user"
myrs.Source = mySQL
Set myrs.ActiveConnection = myconn
myrs.CursorLocation = adUseClient
myrs.Open
myrows = myrs.RecordCount

myrs.Close
myconn.Close

Một cách giải quyết khác là sử dụng câu lệnh SELECT COUNT(*) cho một truy vấn tương tự để lấy số lượng hàng chính xác

Trang máy chủ hoạt động (ASP)

Bạn nên sử dụng cờ tùy chọn Trả về các hàng phù hợp

ứng dụng BDE

Để những thứ này hoạt động, bạn nên đặt các cờ tùy chọn Không tối ưu hóa độ rộng cột và Trả về các hàng phù hợp

Người xây dựng Borland 4

Khi bạn bắt đầu một truy vấn, bạn có thể sử dụng thuộc tính Active hoặc sử dụng phương thức Open. Lưu ý rằng Hoạt động sẽ bắt đầu bằng cách tự động đưa ra CHỌN * TỪ. truy vấn có thể không phải là điều tốt nếu bảng của bạn lớn

ColdFusion (Trên Unix)

Thông tin sau được lấy từ tài liệu ColdFusion

Sử dụng thông tin sau để định cấu hình ColdFusion Server cho Linux để sử dụng trình điều khiển unixODBC với MyODBC cho các nguồn dữ liệu MySQL. Allaire đã xác minh rằng MyODBC Phiên bản 2. 50. 26 hoạt động với MySQL Phiên bản 3. 22. 27 và ColdFusion cho Linux. (Mọi phiên bản mới hơn cũng sẽ hoạt động. ) Bạn có thể tải xuống MyODBC tại http. //www. mysql. com/tải xuống/api-myodbc. html

Phiên bản ColdFusion 4. 5. 1 cho phép bạn sử dụng Quản trị viên ColdFusion để thêm nguồn dữ liệu MySQL. Tuy nhiên, trình điều khiển không được bao gồm trong ColdFusion Phiên bản 4. 5. 1. Trước khi trình điều khiển MySQL xuất hiện trong danh sách thả xuống nguồn dữ liệu ODBC, bạn phải tạo và sao chép trình điều khiển MyODBC sang

194.216.84.21 my_hostname
1

Thư mục Contrib chứa chương trình

194.216.84.21 my_hostname
2, cho phép bạn tạo và xóa tệp đăng ký DSN cho trình điều khiển MyODBC trên các ứng dụng ColdFusion

Giao diện dữ liệu

Bạn phải thay đổi nó thành đầu ra VARCHAR thay vì ENUM, vì nó xuất cái sau theo cách khiến MySQL đau buồn

Excel

Làm. IT tiên boa

  • Nếu bạn gặp vấn đề với ngày tháng, hãy thử chọn chúng dưới dạng chuỗi bằng hàm CONCAT(). Ví dụ

    select CONCAT(rise_time), CONCAT(set_time)
        from sunrise_sunset;

    Các giá trị được truy xuất dưới dạng chuỗi theo cách này sẽ được Excel97 nhận dạng chính xác là giá trị thời gian

    Mục đích của CONCAT() trong ví dụ này là để đánh lừa ODBC nghĩ rằng cột thuộc “kiểu chuỗi”. Không có CONCAT(), ODBC biết cột thuộc loại thời gian và Excel không hiểu điều đó

    Lưu ý rằng đây là một lỗi trong Excel vì nó tự động chuyển đổi một chuỗi thành một thời gian. Điều này thật tuyệt nếu nguồn là một tệp văn bản, nhưng thật ngu ngốc khi nguồn là một kết nối ODBC báo cáo các loại chính xác cho từng cột

Từ

Để lấy dữ liệu từ MySQL sang văn bản Word/Excel, bạn cần sử dụng trình điều khiển MyODBC và Add-in Microsoft Query trợ giúp

Ví dụ để tạo một db có bảng chứa 2 cột văn bản

  1. Chèn hàng bằng công cụ dòng lệnh máy khách mysql

  2. Tạo tệp DSN bằng trình quản lý ODBC—ví dụ:

    194.216.84.21 my_hostname
    3 cho db trước đó

  3. Mở ứng dụng Word

  4. Tạo một tài liệu trống mới

  5. Sử dụng thanh công cụ có tên Cơ sở dữ liệu, nhấn nút Chèn cơ sở dữ liệu

  6. Nhấn nút Lấy dữ liệu

  7. Ở bên phải màn hình Lấy dữ liệu, nhấn nút Ms Query

  8. Trong Truy vấn Ms, hãy tạo Nguồn dữ liệu mới bằng tệp DSN của tôi

  9. Chọn truy vấn mới

  10. Chọn các cột mà bạn muốn

  11. Tạo bộ lọc nếu bạn muốn

  12. Hãy Sắp xếp nếu bạn muốn

  13. Chọn Trả lại dữ liệu cho Microsoft Word

  14. Nhấp vào Kết thúc

  15. Nhấp vào Chèn dữ liệu và chọn bản ghi

  16. Nhấp vào OK và bạn sẽ thấy các hàng trong tài liệu Word của mình

odbcadmin

Chương trình thử nghiệm cho ODBC

Delphi

Bạn phải sử dụng BDE Phiên bản 3. 2 hoặc mới hơn. Đặt trường tùy chọn Không tối ưu hóa độ rộng cột khi kết nối với MySQL

Ngoài ra, đây là một số mã Delphi hữu ích có khả năng thiết lập cả mục nhập ODBC và mục nhập BDE cho MyODBC (mục nhập BDE yêu cầu Trình chỉnh sửa bí danh BDE miễn phí tại Trang Siêu cấp Delphi gần bạn. (Cảm ơn Bryan Brunton bryan@flesherfab. com cho cái này)

fReg:= TRegistry.Create;
  fReg.OpenKey('\Software\ODBC\ODBC.INI\DocumentsFab', True);
  fReg.WriteString('Database', 'Documents');
  fReg.WriteString('Description', ' ');
  fReg.WriteString('Driver', 'C:\WINNT\System32\myodbc.dll');
  fReg.WriteString('Flag', '1');
  fReg.WriteString('Password', '');
  fReg.WriteString('Port', ' ');
  fReg.WriteString('Server', 'xmark');
  fReg.WriteString('User', 'winuser');
  fReg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', True);
  fReg.WriteString('DocumentsFab', 'MySQL');
  fReg.CloseKey;
  fReg.Free;

  Memo1.Lines.Add('DATABASE NAME=');
  Memo1.Lines.Add('USER NAME=');
  Memo1.Lines.Add('ODBC DSN=DocumentsFab');
  Memo1.Lines.Add('OPEN MODE=READ/WRITE');
  Memo1.Lines.Add('BATCH COUNT=200');
  Memo1.Lines.Add('LANGDRIVER=');
  Memo1.Lines.Add('MAX ROWS=-1');
  Memo1.Lines.Add('SCHEMA CACHE DIR=');
  Memo1.Lines.Add('SCHEMA CACHE SIZE=8');
  Memo1.Lines.Add('SCHEMA CACHE TIME=-1');
  Memo1.Lines.Add('SQLPASSTHRU MODE=SHARED AUTOCOMMIT');
  Memo1.Lines.Add('SQLQRYMODE=');
  Memo1.Lines.Add('ENABLE SCHEMA CACHE=FALSE');
  Memo1.Lines.Add('ENABLE BCD=FALSE');
  Memo1.Lines.Add('ROWSET SIZE=20');
  Memo1.Lines.Add('BLOBS TO CACHE=64');
  Memo1.Lines.Add('BLOB SIZE=32');

  AliasEditor.Add('DocumentsFab','MySQL',Memo1.Lines);
Trình tạo C++

Đã thử nghiệm với BDE Phiên bản 3. 0. Vấn đề duy nhất đã biết là khi lược đồ bảng thay đổi, các trường truy vấn không được cập nhật. Tuy nhiên, BDE dường như không nhận ra các khóa chính, chỉ nhận ra chỉ mục CHÍNH, mặc dù đây không phải là vấn đề

Thị lực

Bạn nên sử dụng cờ tùy chọn Trả về các hàng phù hợp

Ngôn ngữ lập trình

Để có thể cập nhật bảng, bạn phải xác định khóa chính cho bảng

Visual Basic với ADO không thể xử lý số nguyên lớn. Điều này có nghĩa là một số truy vấn như SHOW PROCESSLIST sẽ không hoạt động bình thường. Cách khắc phục là đặt thêm tùy chọn OPTION=16834 trong chuỗi kết nối ODBC hoặc đặt tùy chọn Thay đổi cột BIGINT thành INT trong màn hình kết nối MyODBC. Bạn cũng có thể muốn đặt tùy chọn Trả về các hàng phù hợp

VisualInterDev

Nếu bạn gặp lỗi [Microsoft][ODBC Driver Manager] Driver does not support this parameter, lý do có thể là bạn có BIGINT trong kết quả của mình. Hãy thử đặt tùy chọn Thay đổi cột BIGINT thành INT trong màn hình kết nối MyODBC

Đối tượng trực quan

Bạn nên sử dụng cờ tùy chọn Không tối ưu hóa độ rộng cột

Cách lấy giá trị của cột AUTO_INCREMENT trong ODBC

Một vấn đề phổ biến là làm cách nào để lấy giá trị của ID được tạo tự động từ INSERT. Với ODBC, bạn có thể làm điều gì đó như thế này (giả sử rằng auto là trường AUTO_INCREMENT)

INSERT INTO foo (auto,text) VALUES(NULL,'text');
SELECT LAST_INSERT_ID( );

Hoặc, nếu bạn định chèn ID vào một bảng khác, bạn có thể làm điều này

INSERT INTO foo (auto,text) VALUES(NULL,'text');
INSERT INTO foo2 (id,text) VALUES(LAST_INSERT_ID( ),'text');

Vì lợi ích của một số ứng dụng ODBC (ít nhất là Delphi và Access), có thể sử dụng truy vấn sau để tìm hàng mới được chèn

SELECT * FROM tbl_name WHERE auto IS NULL;

Báo cáo sự cố với MyODBC

Nếu bạn gặp khó khăn với MyODBC, bạn nên bắt đầu bằng cách tạo tệp nhật ký từ trình quản lý ODBC (nhật ký bạn nhận được khi yêu cầu nhật ký từ ODBCADMIN) và nhật ký MyODBC

Để lấy nhật ký MyODBC, bạn cần làm như sau

  1. Đảm bảo rằng bạn đang sử dụng

    194.216.84.21 my_hostname
    4 chứ không phải
    194.216.84.21 my_hostname
    5. Cách dễ nhất để thực hiện việc này là lấy
    194.216.84.21 my_hostname
    4 từ bản phân phối MyODBC và sao chép nó qua
    194.216.84.21 my_hostname
    5, có thể nằm trong thư mục
    194.216.84.21 my_hostname
    8 hoặc
    194.216.84.21 my_hostname
    9 của bạn

    Lưu ý rằng bạn có thể muốn khôi phục myodbc cũ. dll khi bạn kiểm tra xong, vì tốc độ này nhanh hơn rất nhiều so với

    194.216.84.21 my_hostname
    4

  2. Gắn cờ tùy chọn `Trace MyODBC' trong màn hình kết nối/cấu hình MyODBC. Nhật ký sẽ được ghi vào tệp

    Windows DSN name:   test
    Description:        This is my test database
    MySql Database:     test
    Server:             194.216.84.21
    User:               monty
    Password:           my_password
    Port:
    1

    Nếu tùy chọn theo dõi không được ghi nhớ khi bạn quay lại màn hình này, điều đó có nghĩa là bạn không sử dụng myodbcd. dll (xem Bước 1)

  3. Bắt đầu ứng dụng của bạn và cố gắng làm cho nó thất bại

Kiểm tra tệp theo dõi MyODBC để tìm hiểu điều gì có thể sai. Bạn sẽ có thể tìm ra các truy vấn đã đưa ra bằng cách tìm kiếm sau chuỗi >mysql_real_query trong tệp

Windows DSN name:   test
Description:        This is my test database
MySql Database:     test
Server:             194.216.84.21
User:               monty
Password:           my_password
Port:
2

Bạn cũng nên thử sao chép các truy vấn trong màn hình mysql hoặc admndemo để tìm hiểu xem lỗi là do MyODBC hay MySQL

Nếu bạn phát hiện ra điều gì đó không ổn, vui lòng chỉ gửi các hàng có liên quan (tối đa 40 hàng) tới myodbc@lists. mysql. com. Vui lòng không bao giờ gửi toàn bộ tệp nhật ký MyODBC hoặc ODBC

Nếu bạn không thể tìm ra điều gì sai, tùy chọn cuối cùng là tạo một kho lưu trữ (tar hoặc zip) chứa tệp theo dõi MyODBC, tệp nhật ký ODBC và tệp README giải thích sự cố. Bạn có thể gửi cái này đến ftp. //ủng hộ. mysql. com/pub/mysql/bí mật/. Chỉ có chúng tôi tại MySQL AB mới có quyền truy cập vào các tệp bạn tải lên và chúng tôi sẽ rất riêng biệt với dữ liệu

Nếu bạn có thể tạo một chương trình cũng hiển thị vấn đề này, vui lòng tải lên chương trình này

Nếu chương trình hoạt động với một số máy chủ SQL khác, bạn nên tạo tệp nhật ký ODBC nơi bạn thực hiện chính xác điều tương tự trong máy chủ SQL khác

Hãy nhớ rằng bạn cung cấp cho chúng tôi càng nhiều thông tin thì chúng tôi càng có nhiều khả năng khắc phục được sự cố

Bạn có thể sử dụng ODBC với MySQL không?

Trình kết nối MySQL/ODBC 8. 0 được khuyến nghị sử dụng với MySQL Server 8. 0, 5. 7 và 5. 6 . Vui lòng nâng cấp lên MySQL Connector/ODBC 8. 0. Để biết các ghi chú nêu chi tiết các thay đổi trong mỗi bản phát hành Trình kết nối/ODBC, hãy xem Ghi chú phát hành Trình kết nối MySQL/ODBC.

Tôi nên sử dụng trình điều khiển ODBC nào cho MySQL?

Chúng tôi muốn thiết lập Nguồn dữ liệu ODBC của MySQL, do đó chọn MySQL ODBC 8. 0 Trình điều khiển ANSI hoặc MySQL ODBC 8. 0 Trình điều khiển Unicode và nhấp vào Kết thúc. Một hộp thoại cấu hình MySQL Connector/ODBC Data Source mở ra. Trong hộp văn bản Mô tả và tên nguồn dữ liệu, hãy cung cấp tên mong muốn và mô tả về nguồn dữ liệu.

Làm cách nào để sử dụng trình kết nối ODBC cho MySQL?

Để thiết lập nguồn dữ liệu ODBC mới cho Máy chủ MySQL. .
Cài đặt trình điều khiển MySQL ODBC mới nhất. .
Mở Quản trị viên ODBC 64 bit. .
Mở tab Hệ thống DSN và nhấp vào Thêm
Chọn trình điều khiển MySQL ODBC mới nhất và nhấp vào Kết thúc
Nhập thông tin đăng nhập ODBC. .
Kiểm tra kết nối nguồn dữ liệu

Làm cách nào để tạo nguồn dữ liệu ODBC cho MySQL?

Tạo DSN với Trình điều khiển ODBC của MySQL . Chọn Trình điều khiển ODBC của MySQL từ danh sách trình điều khiển và sau đó nhấp vào Kết thúc. In the ODBC Datasource Administration (32-bit) Tool navigate to System DSN and click on Add to add a new DSN. Select MySQL ODBC Driver from the list of drivers and then click on Finish .