Đây dường như là một lỗi trong Connector / NET, tương tự như lỗi 75301
nhưng hơi khác một chút. Khi nó đang cố gắng xác định siêu dữ liệu tham số cho quy trình, trước tiên nó sẽ tạo một MySqlSchemaCollection
được đặt tên là Procedures
với tất cả siêu dữ liệu về quy trình. (Đây là SELECT * FROM information_schema.routines WHERE 1=1 AND routine_schema LIKE 'Spike' AND routine_name LIKE 'TestAccess'
truy vấn bạn thấy trong nhật ký của mình.)
Spike
tài khoản người dùng không có quyền đọc ROUTINE_DEFINITION
, vì vậy nó là NULL
. Connector / NET dự kiến trường này không phải là NULL và ném một SqlNullValueException
ngoại lệ khi cố gắng đọc nó.
Có hai cách giải quyết:
1) Đầu tiên, bạn đã phát hiện ra, là đặt CheckParameters=False
trong chuỗi kết nối của bạn. Điều này sẽ vô hiệu hóa việc truy xuất siêu dữ liệu thủ tục đã lưu trữ (tránh sự cố), nhưng có thể dẫn đến các vấn đề khó gỡ lỗi hơn khi gọi các thủ tục được lưu trữ khác nếu bạn không hiểu đúng thứ tự và loại tham số. (Trình kết nối / NET không còn có thể ánh xạ chúng cho bạn bằng siêu dữ liệu.)
2) Chuyển sang thư viện ADO.NET MySQL khác không có lỗi này: MySqlConnector trên NuGet . Nó tương thích cao với Connector / NET, hoạt động nhanh hơn và sửa nhiều lỗi sự cố đã biết .