Cms: Fails at pruning extra revisions

Created on 18 Sep 2020  ·  9Comments  ·  Source: craftcms/cms

Hi,

I'm having an issue and I could not git rid of it for a few weeks. I have one "Pruning extra revisions" task which is constantly failing for a specific entry.

I suppose that it is a problem of redactor plugin when updating it. Maybe the first version installed was having a Field::contentTable property and an old revision still has a reference to it... I'm not sure.

For now, I'm trying to find a mean to get rid of the failing task which is popping every time the old revisions are pruned. It's a single section so I can't delete the entry and recreate it.

I would be very grateful if you can help on this!

Capture d’écran 2020-09-18 à 13 35 11

Stack trace:

- Entry 570 (3 revisions) ... Exception 'yii\base\UnknownPropertyException' with message 'Getting unknown property: craft\redactor\Field::contentTable'

in /Users/nicolas/www/craftcms/linksium/vendor/yiisoft/yii2/base/Component.php:154

Stack trace:
#0 /Users/nicolas/www/craftcms/linksium/vendor/craftcms/cms/src/elements/db/MatrixBlockQuery.php(467): yii\base\Component->__get('contentTable')
#1 /Users/nicolas/www/craftcms/linksium/vendor/craftcms/cms/src/elements/db/ElementQuery.php(1326): craft\elements\db\MatrixBlockQuery->beforePrepare()
#2 /Users/nicolas/www/craftcms/linksium/vendor/yiisoft/yii2/db/QueryBuilder.php(227): craft\elements\db\ElementQuery->prepare(Object(craft\db\pgsql\QueryBuilder))
#3 /Users/nicolas/www/craftcms/linksium/vendor/yiisoft/yii2/db/Query.php(157): yii\db\QueryBuilder->build(Object(craft\elements\db\MatrixBlockQuery))
#4 /Users/nicolas/www/craftcms/linksium/vendor/yiisoft/yii2/db/Query.php(285): yii\db\Query->createCommand(Object(craft\db\Connection))
#5 /Users/nicolas/www/craftcms/linksium/vendor/craftcms/cms/src/db/Query.php(168): yii\db\Query->one(NULL)
#6 /Users/nicolas/www/craftcms/linksium/vendor/craftcms/cms/src/elements/db/ElementQuery.php(1497): craft\db\Query->one(NULL)
#7 /Users/nicolas/www/craftcms/linksium/vendor/craftcms/cms/src/services/Elements.php(511): craft\elements\db\ElementQuery->one()
#8 /Users/nicolas/www/craftcms/linksium/vendor/putyourlightson/craft-blitz/src/behaviors/ElementChangedBehavior.php(65): craft\services\Elements->getElementById(607, 'craft\\elements\\...', 3)
#9 /Users/nicolas/www/craftcms/linksium/vendor/yiisoft/yii2/base/Component.php(759): putyourlightson\blitz\behaviors\ElementChangedBehavior->attach(Object(craft\elements\MatrixBlock))
#10 /Users/nicolas/www/craftcms/linksium/vendor/yiisoft/yii2/base/Component.php(678): yii\base\Component->attachBehaviorInternal('elementChanged', Object(putyourlightson\blitz\behaviors\ElementChangedBehavior))
#11 /Users/nicolas/www/craftcms/linksium/vendor/putyourlightson/craft-blitz/src/Blitz.php(306): yii\base\Component->attachBehavior('elementChanged', 'putyourlightson...')
#12 [internal function]: putyourlightson\blitz\Blitz->putyourlightson\blitz\{closure}(Object(craft\events\DeleteElementEvent))
#13 /Users/nicolas/www/craftcms/linksium/vendor/yiisoft/yii2/base/Event.php(312): call_user_func(Object(Closure), Object(craft\events\DeleteElementEvent))
#14 /Users/nicolas/www/craftcms/linksium/vendor/yiisoft/yii2/base/Component.php(636): yii\base\Event::trigger('craft\\services\\...', 'beforeDeleteEle...', Object(craft\events\DeleteElementEvent))
#15 /Users/nicolas/www/craftcms/linksium/vendor/craftcms/cms/src/services/Elements.php(1402): yii\base\Component->trigger('beforeDeleteEle...', Object(craft\events\DeleteElementEvent))
#16 /Users/nicolas/www/craftcms/linksium/vendor/craftcms/cms/src/fields/Matrix.php(1024): craft\services\Elements->deleteElement(Object(craft\elements\MatrixBlock), true)
#17 /Users/nicolas/www/craftcms/linksium/vendor/craftcms/cms/src/base/Element.php(3214): craft\fields\Matrix->beforeElementDelete(Object(craft\elements\Entry))
#18 /Users/nicolas/www/craftcms/linksium/vendor/craftcms/cms/src/elements/Entry.php(1497): craft\base\Element->beforeDelete()
#19 /Users/nicolas/www/craftcms/linksium/vendor/craftcms/cms/src/services/Elements.php(1406): craft\elements\Entry->beforeDelete()
#20 /Users/nicolas/www/craftcms/linksium/vendor/craftcms/cms/src/console/controllers/utils/PruneRevisionsController.php(106): craft\services\Elements->deleteElement(Object(craft\elements\Entry), true)
#21 [internal function]: craft\console\controllers\utils\PruneRevisionsController->actionIndex()
#22 /Users/nicolas/www/craftcms/linksium/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#23 /Users/nicolas/www/craftcms/linksium/vendor/yiisoft/yii2/base/Controller.php(180): yii\base\InlineAction->runWithParams(Array)
#24 /Users/nicolas/www/craftcms/linksium/vendor/yiisoft/yii2/console/Controller.php(179): yii\base\Controller->runAction('index', Array)
#25 /Users/nicolas/www/craftcms/linksium/vendor/craftcms/cms/src/console/Controller.php(188): yii\console\Controller->runAction('index', Array)
#26 /Users/nicolas/www/craftcms/linksium/vendor/yiisoft/yii2/base/Module.php(528): craft\console\Controller->runAction('index', Array)
#27 /Users/nicolas/www/craftcms/linksium/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('utils/prune-rev...', Array)
#28 /Users/nicolas/www/craftcms/linksium/vendor/craftcms/cms/src/console/Application.php(101): yii\console\Application->runAction('utils/prune-rev...', Array)
#29 /Users/nicolas/www/craftcms/linksium/vendor/yiisoft/yii2/console/Application.php(147): craft\console\Application->runAction('utils/prune-rev...', Array)
#30 /Users/nicolas/www/craftcms/linksium/vendor/yiisoft/yii2/base/Application.php(386): yii\console\Application->handleRequest(Object(craft\console\Request))
#31 /Users/nicolas/www/craftcms/linksium/craft(22): yii\base\Application->run()
#32 {main}

Thanks for your work.

Additional info

  • Craft version: 3.5.10.1
  • PHP version: 7.4.9
  • Database driver & version: postgres 11.3
  • Redactor plugin: 2.7.4
bug

All 9 comments

Do you have a Redactor field that started off as a Matrix field? Matrix fields have a contentTable setting, whereas Redactor fields do not. (If not Matrix perhaps Super Table or Neo – they likely have the same setting.)

The old contentTable setting should have gone away when the field type was converted, but perhaps the type was changed in a nonstandard way, such as the DB type value getting modified directly.

Try checking the settings column value for all of your Redactor fields in the fields database table, and remove the contentTable setting from any that have it.

I don't remember if a redactor field was updated to matrix field but it's possible. I never used Super Table or Neo plugin though.

Here is the result of the db query select id,name,type,settings from fields where type = 'craft\redactor\Field';, unfortunately I can't see any occurence of the word contentTable the settings columns:

-[ RECORD 1 ]---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------
id       | 40
name     | Corps
type     | craft\redactor\Field
settings | {"availableTransforms":"*","availableVolumes":"*","cleanupHtml":true,"columnType":"text","configSelectionMode":"choose","defaultTransform":"","manualConfig":"","purifierConfig":"","purifyHtml
":"1","redactorConfig":"Standard.json","removeEmptyTags":"1","removeInlineStyles":"1","removeNbsp":"1","showHtmlButtonForNonAdmins":"","showUnpermittedFiles":false,"showUnpermittedVolumes":false,"uiMode
":"enlarged"}
-[ RECORD 2 ]---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------
id       | 34
name     | Corps du texte
type     | craft\redactor\Field
settings | {"availableTransforms":"*","availableVolumes":"*","cleanupHtml":true,"columnType":"text","purifierConfig":"","purifyHtml":"1","redactorConfig":"Standard.json","removeEmptyTags":"1","removeInl
ineStyles":"1","removeNbsp":"1","showUnpermittedFiles":false,"showUnpermittedVolumes":true}
-[ RECORD 3 ]---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------
id       | 56
name     | Première section : partie de gauche
type     | craft\redactor\Field
settings | {"availableTransforms":"*","availableVolumes":"","cleanupHtml":true,"columnType":"text","purifierConfig":"","purifyHtml":"1","redactorConfig":"TopSectionText.json","removeEmptyTags":"1","remo
veInlineStyles":"1","removeNbsp":"1","showUnpermittedFiles":false,"showUnpermittedVolumes":false}
-[ RECORD 4 ]---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------
id       | 109
name     | Paragraphe
type     | craft\redactor\Field
settings | {"availableTransforms":"*","availableVolumes":"","cleanupHtml":true,"columnType":"text","configSelectionMode":"choose","defaultTransform":"","manualConfig":"","purifierConfig":"","purifyHtml"
:"1","redactorConfig":"Simple.json","removeEmptyTags":"1","removeInlineStyles":"1","removeNbsp":"1","showHtmlButtonForNonAdmins":"","showUnpermittedFiles":false,"showUnpermittedVolumes":false,"uiMode":"
enlarged"}
-[ RECORD 5 ]---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------
id       | 133
name     | Corps de la page
type     | craft\redactor\Field
settings | {"availableTransforms":"*","availableVolumes":"*","cleanupHtml":true,"columnType":"text","purifierConfig":"","purifyHtml":"1","redactorConfig":"SimplePlus.json","removeEmptyTags":"1","removeI
nlineStyles":"1","removeNbsp":"1","showUnpermittedFiles":false,"showUnpermittedVolumes":false}
-[ RECORD 6 ]---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------
id       | 185
name     | Adresse
type     | craft\redactor\Field
settings | {"availableTransforms":"*","availableVolumes":"","cleanupHtml":true,"columnType":"text","purifierConfig":"","purifyHtml":"1","redactorConfig":"Simplest.json","removeEmptyTags":"1","removeInli
neStyles":"1","removeNbsp":"1","showUnpermittedFiles":false,"showUnpermittedVolumes":false}
-[ RECORD 7 ]---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------
id       | 57
name     | Texte
type     | craft\redactor\Field
settings | {"availableTransforms":"*","availableVolumes":"","cleanupHtml":true,"columnType":"text","purifierConfig":"","purifyHtml":"1","redactorConfig":"TopSectionText.json","removeEmptyTags":"1","remo
veInlineStyles":"1","removeNbsp":"1","showUnpermittedFiles":false,"showUnpermittedVolumes":false}
-[ RECORD 8 ]---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------
id       | 196
name     | Texte
type     | craft\redactor\Field
settings | {"availableTransforms":"*","availableVolumes":"","cleanupHtml":true,"columnType":"text","configSelectionMode":"choose","defaultTransform":"","manualConfig":"","purifierConfig":"","purifyHtml"
:"1","redactorConfig":"Simple.json","removeEmptyTags":"1","removeInlineStyles":"1","removeNbsp":"1","showHtmlButtonForNonAdmins":"","showUnpermittedFiles":false,"showUnpermittedVolumes":false,"uiMode":"
enlarged"}
-[ RECORD 9 ]---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------
id       | 244
name     | Texte
type     | craft\redactor\Field
settings | {"availableTransforms":"*","availableVolumes":"","cleanupHtml":true,"columnType":"text","purifierConfig":"","purifyHtml":"1","redactorConfig":"SimplePlus.json","removeEmptyTags":"1","removeIn
lineStyles":"1","removeNbsp":"1","showUnpermittedFiles":false,"showUnpermittedVolumes":false}
-[ RECORD 10 ]-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
id       | 257
name     | Texte
type     | craft\redactor\Field
settings | {"availableTransforms":"*","availableVolumes":"","cleanupHtml":true,"columnType":"text","purifierConfig":"","purifyHtml":"1","redactorConfig":"SimplePlus.json","removeEmptyTags":"1","removeIn
lineStyles":"1","removeNbsp":"1","showUnpermittedFiles":false,"showUnpermittedVolumes":false}
-[ RECORD 11 ]--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------
id       | 258
name     | Texte
type     | craft\redactor\Field
settings | {"availableTransforms":"*","availableVolumes":"","cleanupHtml":true,"columnType":"text","purifierConfig":"","purifyHtml":"1","redactorConfig":"SimplePlus.json","removeEmptyTags":"1","removeIn
lineStyles":"1","removeNbsp":"1","showUnpermittedFiles":false,"showUnpermittedVolumes":false}
-[ RECORD 12 ]--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------
id       | 204
name     | Texte
type     | craft\redactor\Field
settings | {"availableTransforms":"*","availableVolumes":"*","cleanupHtml":true,"columnType":"text","configSelectionMode":"choose","defaultTransform":"","manualConfig":"","purifierConfig":"","purifyHtml
":"1","redactorConfig":"Standard.json","removeEmptyTags":"1","removeInlineStyles":"1","removeNbsp":"1","showHtmlButtonForNonAdmins":"","showUnpermittedFiles":false,"showUnpermittedVolumes":false,"uiMode
":"enlarged"}
-[ RECORD 13 ]--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------
id       | 270
name     | Contenu du bloc
type     | craft\redactor\Field
settings | {"availableTransforms":"*","availableVolumes":"","cleanupHtml":true,"columnType":"text","configSelectionMode":"choose","defaultTransform":"","manualConfig":"","purifierConfig":"","purifyHtml"
:"1","redactorConfig":"Simple.json","removeEmptyTags":"1","removeInlineStyles":"1","removeNbsp":"1","showHtmlButtonForNonAdmins":"","showUnpermittedFiles":false,"showUnpermittedVolumes":false,"uiMode":"
enlarged"}

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

Sure, will do it in a few minutes.

Resolved with support. thanks!

@nflorentin Any chance you could share how you and the Craft team resolved this?

I believe I'm looking at a similar issue in an instance that I bungled a few Project Config merges (not applying some changes, then making more, overriding some previous ones)… in this case, though, it might have come from a craft\fields\Matrix to craft\fields\Entries transition? Even with a pretty clear idea about when the bug was introduced (and which field), I can't seem to find anything out-of-place!

@AugustMiller It was a clash with Blitz caching plugin. The solution for us was to:

  • totally deactivate Blitz plugin
  • resave the entry which was causing the error
  • reactivate Blitz plugin

Whoa! OK, brilliant. We're using Blitz as well. Followed your recommendations, and the job cleared just fine.

Thanks much. 💞

So glad it helped! You are welcome :)

Was this page helpful?
0 / 5 - 0 ratings