Ralat MySQL 1449: Menyelesaikan Isu Pentakrif Hilang
Apabila cuba melaksanakan pertanyaan pangkalan data tertentu, pengguna mungkin menghadapi ralat MySQL 1449, yang menunjukkan bahawa pengguna yang dinyatakan sebagai penentu tidak wujud. Ralat ini berlaku apabila pengguna yang bertanggungjawab untuk mentakrifkan paparan, pencetus atau prosedur tidak lagi terdapat dalam pangkalan data.
Punca Ralat:
Mesej ralat "#1449 - Pengguna yang ditentukan sebagai penentu ('web2vi'@'%') tidak wujud" menandakan bahawa pengguna 'web2vi' dengan hos '%' tidak boleh ditemui dalam pangkalan data. Ini biasanya berlaku apabila objek pangkalan data dieksport dari satu pelayan ke pelayan lain dan pengguna asal tidak dipindahkan bersama-sama objek.
Pilihan Resolusi:
Terdapat dua utama pendekatan untuk menyelesaikan isu ini:
1. Mengubah suai DEFINER:
Untuk menukar penentu kemudian , laksanakan yang berikut langkah:
Paparan: Jana penyataan ALTER untuk menukar penentu. Jalankan pertanyaan berikut:
SELECT CONCAT("ALTER DEFINER=youruser@host VIEW ", table_name, " AS ", view_definition, ";") FROM information_schema.views WHERE table_schema='your-database-name';
Prosedur Tersimpan: Kemas kini terus penentu untuk prosedur tersimpan. Contohnya:
UPDATE `mysql`.`proc` p SET definer = 'user@%' WHERE definer='root@%'
2. Mencipta Pengguna Yang Hilang:
Berikan pengguna kebenaran penuh kepada pangkalan data menggunakan arahan berikut:
Untuk MySQL:
GRANT ALL ON *.* TO 'someuser'@'%' IDENTIFIED BY 'complex-password'; FLUSH PRIVILEGES;
Untuk MariaDB:
GRANT ALL PRIVILEGES ON *.* TO 'someuser'@'%' IDENTIFIED BY 'complex-password'; FLUSH PRIVILEGES;
Selepas melaksanakan salah satu daripada penyelesaian ini, jalankan semula pertanyaan untuk mengesahkan bahawa ralat telah diselesaikan.
Atas ialah kandungan terperinci Ralat MySQL 1449: Bagaimana untuk Membetulkan Isu 'Pengguna yang dinyatakan sebagai penentu tidak wujud'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!