Jump to content

Rockmigrations creates duplicates of repeater fields in templates table (corrupts database)


thei
 Share

Recommended Posts

i  started to use Config Migrations in an existing processwire application. In directory site/RockMigrations/fields i created all the files defining the fields. Up to now i created only two templates (i.e. 2 of 15 but this shouldn't matter)  in the appropriate templates folder - so far. yesterday my database crashed after clicking the admin modules page - a PDO Error 1062 / duplicates... so i did some research in the database. i found the templates table contains something like duplicated repeater field rows - the field 'contact' has some duplicates with same name followed by numbers 'contact8' 'contact9' etc. I could repair the database by deleting these strange rows.   When i click on module refresh, some new repeater field rows will be created. The crash seems to be a rare case. Such rows can exist and the application still works in some way but some content of repeater fields is missing on pages.

The problem occurs with repeater fields only. Even when i removed the Config Migrations files for these repeater fields these repeater fields have "doubles" in the template fields.

When i switch of RockMigrations this behavior disappears.   

RockMigrations 6.5.0  / PW 3.0.227

Edited by thei
Link to comment
Share on other sites

  • thei changed the title to Rockmigrations creates duplicates of repeater fields in templates table (corrupts database)

Thanx for your quick reaction.

Hm,   "steps"

i installed 6.5.0 (previously a had an old version (5.2..?) installed) i copied the code from the RockMigrations code field to set up the files using fieldname as filename in RockMigrations/fields. e.g. 'label.php' below

<?php
return [
   'collapsed' => 0,
   'columnWidth' => 100,
   'flags' => 0,
   'icon' => 'bookmark-o',
   'inputfieldClass' => '',
   'label' => 'Label',
   'maxlength' => 2048,
   'minlength' => 0,
   'pattern' => '',
   'placeholder' => '',
   'required' => '',
   'requiredAttr' => '',
   'requiredIf' => '',
   'showCount' => 0,
   'showIf' => '',
   'size' => 0,
   'stripTags' => '',
   'tags' => 'text',
   'textformatters' => [
       0 => 'TextformatterEntities',
   ],
   'themeBlank' => '',
   'themeBorder' => '',
   'themeColor' => '',
   'themeInputSize' => '',
   'themeInputWidth' => '',
   'themeOffset' => '',
   'type' => 'FieldtypeText',
];

i remember i did some changes via GUI and did not update the appropriate field file.

At the moment i have no idea how/where to start with debugging RockMigrations

 



 

Link to comment
Share on other sites

<?php
/* repeater field contact */
return [
    'accordionMode' => 0,
    'allowContexts' => [ 0 => 'repeaterTitle', ],
    'collapsed' => 0,
    'columnWidth' => 100,
    'familyFriendly' => 0,
    'fields' => [
        'desc' => [ 'rows' => 1, ],
        'role' => [ 'columnWidth' => 25, ],
        'email' => [ 'columnWidth' => 25, ],
        'phone' => [ 'columnWidth' => 25,],
        'mobile' => ['columnWidth' => 25, ],
    ],
    'flags' => 0,
    'icon' => 'user-md',
    'label' => 'Contact',
    'lazyParents' => '',
    'loudControls' => 0,
    'parent_id' => 0,
    'rememberOpen' => 0,
    'repeaterAddLabel' => '',
    'repeaterCollapse' => 3,
    'repeaterDepth' => '',
    'repeaterLoading' => 1,
    'repeaterMaxItems' => '',
    'repeaterMinItems' => '',
    'repeaterTitle' => '',
    'required' => '',
    'requiredIf' => '',
    'showIf' => '',
    'tags' => 'address organisation',
    'template_id' => 0,
    'themeBorder' => '',
    'themeColor' => '',
    'themeOffset' => '',
    'type' => 'FieldtypeRepeater',
];
<?php
/* field 'desc' */
return [
    'collapsed' => 0,
    'columnWidth' => 100,
    'contentType' => 0,
    'flags' => 0,
    'htmlOptions' => '',
    'icon' => 'sticky-note-o',
    'inputfieldClass' => 'InputfieldTextarea',
    'label' => 'Description',
    'maxlength' => 0,'minlength' => 0, 'placeholder' => '', 'required' => '', 'requiredAttr' => '',
    'requiredIf' => '', 'rows' => 5, 'showCount' => 0, 'showIf' => '', 'stripTags' => '', 'tags' => 'text',
    'textformatters' => [ 0 => 'TextformatterEntities',  ],
    'themeBlank' => '',
    'themeBorder' => '',
    'themeColor' => '',
    'themeInputSize' => '',
    'themeOffset' => '',
    'type' => 'FieldtypeTextarea',
];
<?php
/* field 'role' */
return [
    'collapsed' => 0,
    'columnWidth' => 100,
    'flags' => 0, 'icon' => 'black-tie','inputfieldClass' => '','label' => 'Role',
    'maxlength' => 2048,  'minlength' => 0,
    'pattern' => '',  'placeholder' => '', 'required' => '',
    'requiredAttr' => '', 'requiredIf' => '',
    'showCount' => 0,  'showIf' => '',
    'size' => 0,  'stripTags' => '',  'tags' => 'organisation',
    'textformatters' => [  0 => 'TextformatterEntities',   ],  
    'themeBlank' => '',  'themeBorder' => '',  'themeColor' => '', 'themeInputSize' => '', 'themeInputWidth' => '','themeOffset' => '',
    'type' => 'FieldtypeText',
];

 

<?php
/* email */
return [
    'collapsed' => 0, 'columnWidth' => 100,
    'flags' => 9,   'icon' => 'at',
    'inputfieldClass' => '',  'label' => 'E-Mail Address',
    'maxlength' => 255, 'minlength' => 0,
    'pattern' => '', 'placeholder' => '', 'required' => '',
    'requiredAttr' => '',  'requiredIf' => '',
    'showCount' => 0, 'showIf' => '',
    'size' => 0,  'stripTags' => 1, 'tags' => 'communication',
    'textformatters' => [  0 => 'TextformatterEntities', ],  
    'themeBlank' => '', 'themeBorder' => '', 'themeColor' => '',  'themeInputSize' => '',  'themeInputWidth' => '', 'themeOffset' => '',
    'type' => 'FieldtypeText',
];
~          

 

<?php
/* phone */
return [
    'collapsed' => 0, 'columnWidth' => 100, 'flags' => 0, 
    'icon' => 'phone', 'inputfieldClass' => '', 'label' => 'Phone', 'maxlength' => 2048, 'minlength' => 0,
    'pattern' => '', 'placeholder' => '', 'required' => '', 'requiredAttr' => '', 'requiredIf' => '',
    'showCount' => 0, 'showIf' => '', 'size' => 0, 'stripTags' => '', 'tags' => 'communication',
    'textformatters' => [  0 => 'TextformatterEntities', ],  
    'themeBlank' => '', 'themeBorder' => '', 'themeColor' => '', 'themeInputSize' => '', 'themeInputWidth' => '', 'themeOffset' => '',
    'type' => 'FieldtypeText',
];

 

<?php
/* mobile */
return [
    'collapsed' => 0, 'columnWidth' => 100, 'flags' => 0,  'icon' => 'mobile',
    'inputfieldClass' => '', 'label' => 'Mobile', 'maxlength' => 2048, 'minlength' => 0,
    'pattern' => '', 'placeholder' => '', 'required' => '', 'requiredAttr' => '', 'requiredIf' => '',
    'showCount' => 0, 'showIf' => '', 'size' => 0,
    'stripTags' => '', 'tags' => 'communication',
    'textformatters' => [  0 => 'TextformatterEntities',  ],  
    'themeBlank' => '', 'themeBorder' => '', 'themeColor' => '', 'themeInputSize' => '', 'themeInputWidth' => '', 'themeOffset' => '',
    'type' => 'FieldtypeText',
];
~  

 

when i put the files shown above in RockMigrations/fields and click module refresh...

| 51 | repeater_contact  | {"noChildren":1,"noParents":1,"slashUrls":1,"pageClass":"RepeaterPage","noGlobal":1,"compile":3,"modified":1736510539,"_lazy":1,"_rockmigrations_log":"--- 2025-01-10 13:02:19 ---\n"} |
| 77 | repeater_contact7 | {"noChildren":1,"noParents":1,"slashUrls":1,"pageClass":"RepeaterPage","noGlobal":1,"compile":3,"modified":1736933902,"_lazy":1,"_rockmigrations_log":"--- 2025-01-15 10:38:22 ---\n"} |
| 79 | repeater_contact8 | {"noChildren":1,"noParents":1,"slashUrls":1,"noGlobal":1,"compile":3,"modified":1736933910,"_rockmigrations_log":"--- 2025-01-15 10:38:30 ---\n"}                                      |
| 80 | repeater_contact9 | {"noChildren":1,"noParents":1,"slashUrls":1,"pageClass":"RepeaterPage","noGlobal":1,"compile":3,"modified":1736933916}                                                                 |

 

 

Link to comment
Share on other sites

19 minutes ago, thei said:

at the moment i cannot reproduce the effect, when moving away 'contact.php' and the problem does not disappear....  Cache? i deleted the cache

Sorry I don't understand.

Link to comment
Share on other sites

above i wrote "Even when i removed the Config Migrations files for these repeater fields these repeater fields have "doubles" in the template fields"  i.e. i couldn't reproduce this effect (new repeater-field rows when repeater-field Config-Migrations file is moved away.

But: a repeater field Config - Migrations file produces to an improper database when refreshing modules is clicked

  • Like 1
Link to comment
Share on other sites

 

imported production database, installed RM 6.5 and copied RockMigrations folder with fields and repeater fields files. So this is the first effect:  PDO Error 1050

ScreenshotRockMigrations6-5.png

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...