Skip to content

Unable to re-create person

Describe the bug

Unable to re-create a person as avatar is retained.

Steps to reproduce

  1. Create a person test, giving them an avatar
  2. Delete the person
  3. Create person test again, giving them avatar.

2a. Observe, that avatar is retained under MEDIA_PATH/persons/test.jpg and in cp_media table.

Expected behavior

Person created.

Actual behavior

50x upon updating cp_persons table.

Relevant logs and/or screenshots

mysqli_sql_exception: Cannot add or update a child row: a foreign key constraint fails (`castopod`.`cp_persons`, CONSTRAINT `cp_persons_avatar_id_foreign` FOREIGN KEY (`avatar_id`) REFERENCES `cp_media` (`id`) ON DELETE SET NULL) in /var/www/castopod/vendor/codeigniter4/framework/system/Database/MySQLi/Connection.php:306
Stack trace:
#0 /var/www/castopod/vendor/codeigniter4/framework/system/Database/MySQLi/Connection.php(306): mysqli->query()
#1 /var/www/castopod/vendor/codeigniter4/framework/system/Database/BaseConnection.php(693): CodeIgniter\Database\MySQLi\Connection->execute()
#2 /var/www/castopod/vendor/codeigniter4/framework/system/Database/BaseConnection.php(607): CodeIgniter\Database\BaseConnection->simpleQuery()
#3 /var/www/castopod/vendor/codeigniter4/framework/system/Database/BaseBuilder.php(2308): CodeIgniter\Database\BaseConnection->query()
#4 /var/www/castopod/vendor/codeigniter4/framework/system/Model.php(319): CodeIgniter\Database\BaseBuilder->insert()
#5 /var/www/castopod/vendor/codeigniter4/framework/system/BaseModel.php(788): CodeIgniter\Model->doInsert()
#6 /var/www/castopod/vendor/codeigniter4/framework/system/Model.php(715): CodeIgniter\BaseModel->insert()
#7 /var/www/castopod/modules/Admin/Controllers/PersonController.php(91): CodeIgniter\Model->insert()
#8 /var/www/castopod/modules/Admin/Controllers/PersonController.php(25): Modules\Admin\Controllers\PersonController->attemptCreate()
#9 /var/www/castopod/vendor/codeigniter4/framework/system/CodeIgniter.php(941): Modules\Admin\Controllers\PersonController->_remap()
#10 /var/www/castopod/vendor/codeigniter4/framework/system/CodeIgniter.php(502): CodeIgniter\CodeIgniter->runController()
#11 /var/www/castopod/vendor/codeigniter4/framework/system/CodeIgniter.php(361): CodeIgniter\CodeIgniter->handleRequest()
#12 /var/www/castopod/public/index.php(85): CodeIgniter\CodeIgniter->run()
#13 {main}

Context

  • Castopod: 1.7.3
  • OS: Debian 11
  • Browser: Firefox 121
  • Web server: NGINX
  • Yunohost 11.2.8 with Castopod 1.7.3~ynh2

Possible fixes

Manually removing entry from cp_media and removing the file from FS fixes the problem.

Edited by orhtej2