Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[4.x]: Unable to Delete Category Groups #13127

Closed
vanburenx opened this issue Apr 26, 2023 · 4 comments
Closed

[4.x]: Unable to Delete Category Groups #13127

vanburenx opened this issue Apr 26, 2023 · 4 comments

Comments

@vanburenx
Copy link

What happened?

Description

Currently unable to delete a Category Group when using the entrify/categories (also, I checked & can't delete them from the CP Interface either).

Steps to reproduce

  1. Create a Category Group
    1. Use the entrify/categories cli command
      1. ddev php craft entrify/categories <CategoryGroupName>
      2. Answer all questions with the default
        or
    2. Just try deleting a Category Group from the CP Interface.

Expected behavior

Categories migrate to new Structure section successfully. (Category Group deleted)

Actual behavior

After answering "Yes" to Delete the “<CategoryGroupName>” category group? (yes|no) [yes]: an error occurs and stops the migration from completing and the Category Group isn't deleted. Can't delete Category Groups.

CLI Output Error.

Delete the “<CategoryGroupName>” category group? (yes|no) [yes]:
 → Deleting category group … ✕
   Error: SQLSTATE[42P01]: Undefined table: 7 ERROR:  missing FROM-clause entry for table "elements"
LINE 5: "categories"."id" = "elements"."id" AND
                            ^
The SQL being executed was: UPDATE "craft_elements"
SET "dateDeleted" = '2023-04-26 20:04:21'
FROM "craft_categories" "categories"
WHERE "categories"."groupId" = 2 AND
"categories"."id" = "elements"."id" AND
"elements"."canonicalId" IS NULL AND
"elements"."revisionId" IS NULL AND
"elements"."dateDeleted" IS NULL
Exception 'yii\db\Exception' with message 'SQLSTATE[42P01]: Undefined table: 7 ERROR:  missing FROM-clause entry for table "elements"
LINE 5: "categories"."id" = "elements"."id" AND
                            ^
The SQL being executed was: UPDATE "craft_elements"
SET "dateDeleted" = '2023-04-26 20:04:21'
FROM "craft_categories" "categories"
WHERE "categories"."groupId" = 2 AND
"categories"."id" = "elements"."id" AND
"elements"."canonicalId" IS NULL AND
"elements"."revisionId" IS NULL AND
"elements"."dateDeleted" IS NULL'

in /var/www/html/cms/vendor/yiisoft/yii2/db/Schema.php:676

Error Info:
Array
(
    [0] => 42P01
    [1] => 7
    [2] => ERROR:  missing FROM-clause entry for table "elements"
LINE 5: "categories"."id" = "elements"."id" AND
                            ^
)

Caused by: Exception 'PDOException' with message 'SQLSTATE[42P01]: Undefined table: 7 ERROR:  missing FROM-clause entry for table "elements"
LINE 5: "categories"."id" = "elements"."id" AND
                            ^'

in /var/www/html/cms/vendor/yiisoft/yii2/db/Command.php:1302

Stack trace:
#0 /var/www/html/cms/vendor/yiisoft/yii2/db/Command.php(1302): PDOStatement->execute()
#1 /var/www/html/cms/vendor/yiisoft/yii2/db/Command.php(1102): yii\db\Command->internalExecute('UPDATE "craft_e...')
#2 /var/www/html/cms/vendor/craftcms/cms/src/services/Categories.php(629): yii\db\Command->execute()
#3 /var/www/html/cms/vendor/craftcms/cms/src/base/ApplicationTrait.php(1755): craft\services\Categories->handleDeletedCategoryGroup(Object(craft\events\ConfigEvent))
#4 /var/www/html/cms/vendor/craftcms/cms/src/services/ProjectConfig.php(1126): craft\console\Application->craft\base\{closure}(Object(craft\events\ConfigEvent))
#5 [internal function]: craft\services\ProjectConfig->handleChangeEvent(Object(craft\events\ConfigEvent))
#6 /var/www/html/cms/vendor/yiisoft/yii2/base/Component.php(633): call_user_func(Array, Object(craft\events\ConfigEvent))
#7 /var/www/html/cms/vendor/craftcms/cms/src/models/ProjectConfigData.php(76): yii\base\Component->trigger('removeItem', Object(craft\events\ConfigEvent))
#8 /var/www/html/cms/vendor/craftcms/cms/src/services/ProjectConfig.php(516): craft\models\ProjectConfigData->commitChanges(Array, NULL, 'categoryGroups....', true, 'Delete category...', true)
#9 /var/www/html/cms/vendor/craftcms/cms/src/services/ProjectConfig.php(476): craft\services\ProjectConfig->_setInternal('categoryGroups....', NULL, 'Delete category...', true, false)
#10 /var/www/html/cms/vendor/craftcms/cms/src/services/ProjectConfig.php(533): craft\services\ProjectConfig->set('categoryGroups....', NULL, 'Delete category...')
#11 /var/www/html/cms/vendor/craftcms/cms/src/services/Categories.php(546): craft\services\ProjectConfig->remove('categoryGroups....', 'Delete category...')
#12 /var/www/html/cms/vendor/craftcms/cms/src/console/controllers/EntrifyController.php(250): craft\services\Categories->deleteGroup(Object(craft\models\CategoryGroup))
#13 /var/www/html/cms/vendor/craftcms/cms/src/console/Controller.php(452): craft\console\controllers\EntrifyController->craft\console\controllers\{closure}()
#14 /var/www/html/cms/vendor/craftcms/cms/src/console/controllers/EntrifyController.php(251): craft\console\Controller->do('Deleting catego...', Object(Closure))
#15 [internal function]: craft\console\controllers\EntrifyController->actionCategories(Object(craft\models\CategoryGroup))
#16 /var/www/html/cms/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#17 /var/www/html/cms/vendor/yiisoft/yii2/base/Controller.php(178): yii\base\InlineAction->runWithParams(Array)
#18 /var/www/html/cms/vendor/yiisoft/yii2/console/Controller.php(180): yii\base\Controller->runAction('categories', Array)
#19 /var/www/html/cms/vendor/craftcms/cms/src/console/ControllerTrait.php(87): yii\console\Controller->runAction('categories', Array)
#20 /var/www/html/cms/vendor/craftcms/cms/src/console/Controller.php(217): craft\console\Controller->traitRunAction('categories', Array)
#21 /var/www/html/cms/vendor/yiisoft/yii2/base/Module.php(552): craft\console\Controller->runAction('categories', Array)
#22 /var/www/html/cms/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('entrify/categor...', Array)
#23 /var/www/html/cms/vendor/craftcms/cms/src/console/Application.php(90): yii\console\Application->runAction('entrify/categor...', Array)
#24 /var/www/html/cms/vendor/yiisoft/yii2/console/Application.php(147): craft\console\Application->runAction('entrify/categor...', Array)
#25 /var/www/html/cms/vendor/craftcms/cms/src/console/Application.php(121): yii\console\Application->handleRequest(Object(craft\console\Request))
#26 /var/www/html/cms/vendor/yiisoft/yii2/base/Application.php(384): craft\console\Application->handleRequest(Object(craft\console\Request))
#27 /var/www/html/cms/craft(13): yii\base\Application->run()
#28 {main}
Failed to run php ./cms/craft entrify/categories <CategoryGroupName>: exit status 1

Error Log when trying to delete a Category Group in the CP Interface.

[ERROR][] PDOException: SQLSTATE[42P01]: Undefined table: 7 ERROR: missing FROM-clause entry for table "elements" LINE 5: "categories"."id" = "elements"."id" AND ^ in /var/www/html/cms/vendor/yiisoft/yii2/db/Command.php:1302 Stack trace: #0 /var/www/html/cms/vendor/yiisoft/yii2/db/Command.php(1302): PDOStatement->execute() #1 /var/www/html/cms/vendor/yiisoft/yii2/db/Command.php(1102): yii\db\Command->internalExecute('UPDATE "craft_e...') #2 /var/www/html/cms/vendor/craftcms/cms/src/services/Categories.php(629): yii\db\Command->execute() #3 /var/www/html/cms/vendor/craftcms/cms/src/base/ApplicationTrait.php(1755): craft\services\Categories->handleDeletedCategoryGroup(Object(craft\events\ConfigEvent)) #4 /var/www/html/cms/vendor/craftcms/cms/src/services/ProjectConfig.php(1126): craft\web\Application->craft\base\{closure}(Object(craft\events\ConfigEvent)) #5 [internal function]: craft\services\ProjectConfig->handleChangeEvent(Object(craft\events\ConfigEvent)) #6 /var/www/html/cms/vendor/yiisoft/yii2/base/Component.php(633): call_user_func(Array, Object(craft\events\ConfigEvent)) #7 /var/www/html/cms/vendor/craftcms/cms/src/models/ProjectConfigData.php(76): yii\base\Component->trigger('removeItem', Object(craft\events\ConfigEvent)) #8 /var/www/html/cms/vendor/craftcms/cms/src/services/ProjectConfig.php(516): craft\models\ProjectConfigData->commitChanges(Array, NULL, 'categoryGroups....', true, 'Delete category...', true) #9 /var/www/html/cms/vendor/craftcms/cms/src/services/ProjectConfig.php(476): craft\services\ProjectConfig->_setInternal('categoryGroups....', NULL, 'Delete category...', true, false) #10 /var/www/html/cms/vendor/craftcms/cms/src/services/ProjectConfig.php(533): craft\services\ProjectConfig->set('categoryGroups....', NULL, 'Delete category...') #11 /var/www/html/cms/vendor/craftcms/cms/src/services/Categories.php(546): craft\services\ProjectConfig->remove('categoryGroups....', 'Delete category...') #12 /var/www/html/cms/vendor/craftcms/cms/src/services/Categories.php(528): craft\services\Categories->deleteGroup(Object(craft\models\CategoryGroup)) #13 /var/www/html/cms/vendor/craftcms/cms/src/controllers/CategoriesController.php(201): craft\services\Categories->deleteGroupById(2) #14 [internal function]: craft\controllers\CategoriesController->actionDeleteCategoryGroup() #15 /var/www/html/cms/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array) #16 /var/www/html/cms/vendor/yiisoft/yii2/base/Controller.php(178): yii\base\InlineAction->runWithParams(Array) #17 /var/www/html/cms/vendor/yiisoft/yii2/base/Module.php(552): yii\base\Controller->runAction('delete-category...', Array) #18 /var/www/html/cms/vendor/craftcms/cms/src/web/Application.php(302): yii\base\Module->runAction('categories/dele...', Array) #19 /var/www/html/cms/vendor/craftcms/cms/src/web/Application.php(627): craft\web\Application->runAction('categories/dele...', Array) #20 /var/www/html/cms/vendor/craftcms/cms/src/web/Application.php(281): craft\web\Application->_processActionRequest(Object(craft\web\Request)) #21 /var/www/html/cms/vendor/yiisoft/yii2/base/Application.php(384): craft\web\Application->handleRequest(Object(craft\web\Request)) #22 /var/www/html/cms/public/index.php(12): yii\base\Application->run() #23 {main} Next yii\db\Exception: SQLSTATE[42P01]: Undefined table: 7 ERROR: missing FROM-clause entry for table "elements" LINE 5: "categories"."id" = "elements"."id" AND ^ The SQL being executed was: UPDATE "craft_elements" SET "dateDeleted" = '2023-04-26 21:57:30' FROM "craft_categories" "categories" WHERE "categories"."groupId" = 2 AND "categories"."id" = "elements"."id" AND "elements"."canonicalId" IS NULL AND "elements"."revisionId" IS NULL AND "elements"."dateDeleted" IS NULL in /var/www/html/cms/vendor/yiisoft/yii2/db/Schema.php:676 Stack trace: #0 /var/www/html/cms/vendor/yiisoft/yii2/db/Command.php(1307): yii\db\Schema->convertException(Object(PDOException), 'UPDATE "craft_e...') #1 /var/www/html/cms/vendor/yiisoft/yii2/db/Command.php(1102): yii\db\Command->internalExecute('UPDATE "craft_e...') #2 /var/www/html/cms/vendor/craftcms/cms/src/services/Categories.php(629): yii\db\Command->execute() #3 /var/www/html/cms/vendor/craftcms/cms/src/base/ApplicationTrait.php(1755): craft\services\Categories->handleDeletedCategoryGroup(Object(craft\events\ConfigEvent)) #4 /var/www/html/cms/vendor/craftcms/cms/src/services/ProjectConfig.php(1126): craft\web\Application->craft\base\{closure}(Object(craft\events\ConfigEvent)) #5 [internal function]: craft\services\ProjectConfig->handleChangeEvent(Object(craft\events\ConfigEvent)) #6 /var/www/html/cms/vendor/yiisoft/yii2/base/Component.php(633): call_user_func(Array, Object(craft\events\ConfigEvent)) #7 /var/www/html/cms/vendor/craftcms/cms/src/models/ProjectConfigData.php(76): yii\base\Component->trigger('removeItem', Object(craft\events\ConfigEvent)) #8 /var/www/html/cms/vendor/craftcms/cms/src/services/ProjectConfig.php(516): craft\models\ProjectConfigData->commitChanges(Array, NULL, 'categoryGroups....', true, 'Delete category...', true) #9 /var/www/html/cms/vendor/craftcms/cms/src/services/ProjectConfig.php(476): craft\services\ProjectConfig->_setInternal('categoryGroups....', NULL, 'Delete category...', true, false) #10 /var/www/html/cms/vendor/craftcms/cms/src/services/ProjectConfig.php(533): craft\services\ProjectConfig->set('categoryGroups....', NULL, 'Delete category...') #11 /var/www/html/cms/vendor/craftcms/cms/src/services/Categories.php(546): craft\services\ProjectConfig->remove('categoryGroups....', 'Delete category...') #12 /var/www/html/cms/vendor/craftcms/cms/src/services/Categories.php(528): craft\services\Categories->deleteGroup(Object(craft\models\CategoryGroup)) #13 /var/www/html/cms/vendor/craftcms/cms/src/controllers/CategoriesController.php(201): craft\services\Categories->deleteGroupById(2) #14 [internal function]: craft\controllers\CategoriesController->actionDeleteCategoryGroup() #15 /var/www/html/cms/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array) #16 /var/www/html/cms/vendor/yiisoft/yii2/base/Controller.php(178): yii\base\InlineAction->runWithParams(Array) #17 /var/www/html/cms/vendor/yiisoft/yii2/base/Module.php(552): yii\base\Controller->runAction('delete-category...', Array) #18 /var/www/html/cms/vendor/craftcms/cms/src/web/Application.php(302): yii\base\Module->runAction('categories/dele...', Array) #19 /var/www/html/cms/vendor/craftcms/cms/src/web/Application.php(627): craft\web\Application->runAction('categories/dele...', Array) #20 /var/www/html/cms/vendor/craftcms/cms/src/web/Application.php(281): craft\web\Application->_processActionRequest(Object(craft\web\Request)) #21 /var/www/html/cms/vendor/yiisoft/yii2/base/Application.php(384): craft\web\Application->handleRequest(Object(craft\web\Request)) #22 /var/www/html/cms/public/index.php(12): yii\base\Application->run() #23 {main} Additional Information: Array ( [0] => 42P01 [1] => 7 [2] => ERROR: missing FROM-clause entry for table "elements" LINE 5: "categories"."id" = "elements"."id" AND ^ ) {"memory":3678480,"exception":"[object] (yii\\db\\Exception(code: 42P01): SQLSTATE[42P01]: Undefined table: 7 ERROR: missing FROM-clause entry for table \"elements\"\nLINE 5: \"categories\".\"id\" = \"elements\".\"id\" AND\n ^\nThe SQL being executed was: UPDATE \"craft_elements\"\nSET \"dateDeleted\" = '2023-04-26 21:57:30'\nFROM \"craft_categories\" \"categories\"\nWHERE \"categories\".\"groupId\" = 2 AND\n\"categories\".\"id\" = \"elements\".\"id\" AND\n\"elements\".\"canonicalId\" IS NULL AND\n\"elements\".\"revisionId\" IS NULL AND\n\"elements\".\"dateDeleted\" IS NULL at /var/www/html/cms/vendor/yiisoft/yii2/db/Schema.php:676)\n[previous exception] [object] (PDOException(code: 42P01): SQLSTATE[42P01]: Undefined table: 7 ERROR: missing FROM-clause entry for table \"elements\"\nLINE 5: \"categories\".\"id\" = \"elements\".\"id\" AND\n ^ at /var/www/html/cms/vendor/yiisoft/yii2/db/Command.php:1302)"} {"yii_category":"yii\\db\\Exception"}

Craft CMS version

4.4.8

PHP version

8.1.16

Operating system and version

Linux 5.19.0-41-generic

Database type and version

PostgreSQL 14.5

Image driver and version

Imagick 3.7.0 (ImageMagick 6.9.11-60)

Installed plugins and versions

  • Redactor v3.0.4
@brandonkelly
Copy link
Member

Any chance you can send a database backup and your Composer files over to [email protected]?

@vanburenx
Copy link
Author

Hey, thanks and I just emailed some files over.

@brandonkelly
Copy link
Member

Thanks! This is now fixed for the next release.

To get the fix early, change your craftcms/cms requirement in composer.json to "dev-develop#63871573a7a58b0c9e3dd1a6436e9aa87ec11317 as 4.4.8" and run composer update.

@brandonkelly
Copy link
Member

Craft 4.4.9 is out with that fix. Thanks again!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants