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 Show
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 hostname0 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 hostname1 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
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 ODBCCó ba khả năng để chỉ định tên máy chủ trên Windows 95
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 hostname3. 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 MyODBCNgườ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 hostname4 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 hostname5 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 hostname6 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 hostname7 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 hostname8. Để cài đặt tệp này, hãy sao chép ip hostname8 đè lên tệp ip hostname7 đã cài đặt Cách báo cáo sự cố với MyODBCMyODBC đã đượ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
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 MyODBCHầ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
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 4Khi 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_hostname1 Thư mục Contrib chứa chương trình 194.216.84.21 my_hostname2, 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 ColdFusionGiao 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 ExcelLàm. IT tiên boa
Để 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
Chương trình thử nghiệm cho ODBC DelphiBạ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ựcBạ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 VisualInterDevNế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 quanBạ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 ODBCMộ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 MyODBCNế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
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 . |