Cyberpanelden bir user silerken şu hatayla karşılaşabiliriz:

(1452, ‘Cannot add or update a child row: a foreign key constraint fails (`cyberpanel`.`domains`, CONSTRAINT `domains_admin_id_c9d09cb8_fk_loginSystem_administrator_id` FOREIGN KEY (`admin_id`) REFERENCES `loginSystem_administrator` (`id`))’)

Hatadan da anlaşılacağı gibi bu bir foreign key hatası. Yani iki tablo arasındaki ilişkiden kaynaklanan bir hata. loginSystem_administrator.id kolonu domains.admin_id kolonuna bağlı. Bu yüzden loginSystem_administrator tablosundaki bir satırı silemiyor. Bu problemi çözmek için domains tablosundaki hangi satırın loginSystem_administrator tablosundaki usera ait olduğunu bulup bu aitliği değiştirmemiz gerekiyor. Yani o domaini başka bir kullanıcıya atamamız gerekiyor. Bunun için aşağıdaki adımları sırayla yapıyoruz.

Öncelikle aşağıdaki komut satırını girerek “cyberpanel” mysql kullanıcısının şifresini bulmamız gerekiyor.

nano /usr/local/CyberCP/CyberCP/settings.py

burada “cyberpanel” diye aratın ve cyberpanel mysql şifresini bulun. Ardından aşağıdaki komutu girip peşinden şifreyi de girip mysql konsol ekranına geçelim.

mysql --host=127.0.0.1 --port=3307 -u cyberpanel -p

Login olduktan sonra aşağıdaki SQL komutunu giriyoruz ve silmek istediğimiz user’a atanmış olan domaini buluyoruz.

SELECT * FROM loginSystem_administrator WHERE userName = 'our_unnecessary_username';

Burada id kolonu bize bu usera ait olan id bilgisini veriyor. Şimd bu bilgiyi domains tablosunda aratıyoruz ve böylece bu kullanıcıya atanmış olan domainleri buluyoruz. Örneğin id değeri 2 olsun.

SELECT * FROM domains WHERE admin_id = 2;

Artık bu domainlerin sahipliğini farklı bir usera atayabiliriz. admin userinin id’si 1 olduğu için silinecek usera ait olan domainlerin sahipliğini admin’e verebiliriz.

UPDATE domains SET admin_id = 1 WHERE admin_id = 2;

Artık bu domainin yöneticisi “admin” kullanıcısı oldu. Şimdi silmek istediğimiz alt kullanıcıyı cyberpanel üzerinden silebiliriz.

Burada admin_id değeri sizin silmek istediğiniz kullanıcının id’si olduğu için foreign key hatası alıyoruz. Normalde cyberpaneldeki “MODIFY WEBSITE” menüsünden bir sitenin sahipliğini (owner) başka bir kullanıcıya atamasını yapıyoruz ama galiba domains tablosunda güncellenmiyor. Bu yüzden de bu kullanıcıyı silemiyoruz. Bence bu bir bug. Cyberpanel geliştiricilerine bununla ilgili bilgi vermek lazım ama bu problemin çözülmesi aylar süreceği için şimdilik kendi problemimizi kendimiz çözmemiz gerekiyor.

 

 


0 yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.