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 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
Để 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 sauip 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 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 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 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 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
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
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
Để 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èn hàng bằng công cụ dòng lệnh máy khách mysql
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 đóMở ứng dụng Word
Tạo một tài liệu trống mới
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
Nhấn nút Lấy dữ liệu
Ở bên phải màn hình Lấy dữ liệu, nhấn nút Ms Query
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
Chọn truy vấn mới
Chọn các cột mà bạn muốn
Tạo bộ lọc nếu bạn muốn
Hãy Sắp xếp nếu bạn muốn
Chọn Trả lại dữ liệu cho Microsoft Word
Nhấp vào Kết thúc
Nhấp vào Chèn dữ liệu và chọn bản ghi
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
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 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
Đảm bảo rằng bạn đang sử dụng
194.216.84.21 my_hostname
4 chứ không phải194.216.84.21 my_hostname
5. Cách dễ nhất để thực hiện việc này là lấy194.216.84.21 my_hostname
4 từ bản phân phối MyODBC và sao chép nó qua194.216.84.21 my_hostname
5, có thể nằm trong thư mục194.216.84.21 my_hostname
8 hoặc194.216.84.21 my_hostname
9 của bạnLư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
4Gắ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:
1Nế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]
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ố