Ini tampaknya merupakan bug di Connector/NET, mirip dengan bug 75301
tapi sedikit berbeda. Saat mencoba menentukan metadata parameter untuk prosedur, pertama-tama ia membuat MySqlSchemaCollection
bernama Procedures
dengan semua metadata tentang prosedur. (Ini adalah SELECT * FROM information_schema.routines WHERE 1=1 AND routine_schema LIKE 'Spike' AND routine_name LIKE 'TestAccess'
kueri yang Anda lihat di log Anda.)
Spike
akun pengguna tidak memiliki izin untuk membaca ROUTINE_DEFINITION
kolom, jadi NULL
. Connector/NET mengharapkan bidang ini menjadi non-NULL dan melempar SqlNullValueException
pengecualian mencoba membacanya.
Ada dua solusi:
1) Yang pertama, yang Anda temukan, adalah menyetel CheckParameters=False
di string koneksi Anda. Ini akan menonaktifkan pengambilan metadata prosedur tersimpan (menghindari crash), tetapi dapat menyebabkan masalah yang lebih sulit untuk di-debug memanggil prosedur tersimpan lainnya jika Anda tidak mendapatkan urutan dan jenis parameter dengan tepat. (Connector/NET tidak dapat lagi memetakannya untuk Anda menggunakan metadata.)
2) Beralih ke pustaka MySQL ADO.NET lain yang tidak memiliki bug ini:MySqlConnector di NuGet . Ini sangat kompatibel dengan Connector/NET, berkinerja lebih cepat, dan memperbaiki banyak masalah umum .