কম্পিউটার টিউটোরিয়াল

MySQL-এ Stored Procedure DEFINER সমস্যা সমাধান করুন

হোস্ট ভেরিফাই করে DEFINER সেট করুন

স্টোরড প্রসিডিউর তৈরির সময় DEFINER-এর হোস্ট ('localhost' বা '%') এক্টিভ ইউজার অ্যাকাউন্টের সাথে মিল খায় কিনা যাচাই করুন।

ইউজার অ্যাকাউন্ট যাচাই করুন

mysql> SELECT user, host FROM mysql.user;

ফলাফল (আংশিক):

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| Bob              | %         |
| root             | %         |
| David            | localhost |
| ...              | ...       |
+------------------+-----------+

সঠিক DEFINER দিয়ে প্রসিডিউর তৈরি করুন

এখানে 'Bob' ইউজারের হোস্ট '%', তাই DEFINER = `Bob`@`%` ব্যবহার করুন।

mysql> DELIMITER //
mysql> CREATE DEFINER=`Bob`@`%` PROCEDURE `Message`()
BEGIN
    SELECT "Hello World";
END //
Query OK, 0 rows affected (0.14 sec)
mysql> DELIMITER ;

প্রসিডিউর কল করুন

mysql> CALL `Message`();

ফলাফল:

+-------------+
| Hello World |
+-------------+
| Hello World |
+-------------+

মূল সমস্যা: DEFINER-এ নির্দিষ্ট ইউজার/হোস্ট কম্বিনেশন mysql.user টেবিলে থাকতে হয়। लोकালহোস্ট থেকে কানেক্ট করলে 'user'@'localhost' এবং রিমোট থেকে 'user'@'%' প্রয়োজন। সমাধান: CREATE DEFINER=CURRENT_USER PROCEDURE ... ব্যবহার করুন অথবা প্রয়োজনীয় হোস্টে ইউজার তৈরি করুন।

  1. MySQL স্টোরড প্রোসিডিউরে DELETE কোয়েরি বাস্তবায়ন করা

  2. MySQL স্টোরড প্রসিডিউরে WHERE IN() ব্যবহার করা

  3. MySQL 저장 프로시저에서 수학 연산(곱셈) 수행하기

  4. MySQL স্টোরড প্রসিডিউরে ডেটা ইনসার্ট করা