Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Các cấp độ truy cập tối thiểu để chạy thủ tục lưu trữ MySql

Đâ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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận TỐI ĐA từ NHÓM BẰNG

  2. Chèn danh sách vào cơ sở dữ liệu của tôi bằng Python

  3. MySQL cung cấp cho các hàng một thời gian tồn tại

  4. Cách chạy nhiều Truy vấn cập nhật trong một câu lệnh duy nhất trong PHP và mySQL

  5. truy vấn sql để chọn bản ghi có cùng id nhưng khác giá trị trong hai cột