verbb / formie

The most user-friendly forms plugin for Craft CMS.
Other
93 stars 69 forks source link

Craft 5 migration error #1782

Closed benfeather closed 3 months ago

benfeather commented 3 months ago

Describe the bug

When upgrading to Craft 5, I get an error during the migration step:

*** applying m231125_000000_craft5
    > create table {{%formie_fieldlayouts}} ... done (time: 0.004s)
    > create table {{%formie_fieldlayout_pages}} ... done (time: 0.005s)
    > create table {{%formie_fieldlayout_rows}} ... done (time: 0.004s)
    > create table {{%formie_fields}} ... done (time: 0.005s)
    > add column layoutId integer AFTER `settings` to table {{%formie_forms}} ... done (time: 0.016s)
    > add column content json AFTER `id` to table {{%formie_submissions}} ... done (time: 0.012s)
    > dropping foreign key on {{%formie_forms}} if it exists ... done (time: 0.001s)
    > dropping index on {{%formie_forms}} if it exists ... done (time: 0.000s)
    > create index idx_uhhnqnvnxqiomlhvsaqdzzjaxddpvienxxav on {{%formie_fieldlayout_pages}} (layoutId) ... done (time: 0.004s)
    > create index idx_uhrnwdoeecnrnrlhyyonxvsugqeqvytsvdlc on {{%formie_fieldlayout_rows}} (layoutId) ... done (time: 0.004s)
    > create index idx_wolpthedesoqunszubikupcmuccneveoxckj on {{%formie_fieldlayout_rows}} (pageId) ... done (time: 0.005s)
    > create index idx_npgfzdzszlrnyeoxknhpesdyykxnxzhtdaan on {{%formie_fields}} (layoutId) ... done (time: 0.004s)
    > create index idx_rcupwbnizyqwvooudcwyiuknoocoiimidlfx on {{%formie_fields}} (pageId) ... done (time: 0.004s)
    > create index idx_oibsozmuqsntduywndpvemzydcpwggddcgvs on {{%formie_fields}} (rowId) ... done (time: 0.005s)
    > create index idx_nrcqukixztpkyaneqckrhruyfqlarkcmomuv on {{%formie_fields}} (handle) ... done (time: 0.005s)
    > create index idx_xnnyztjqyceozzhmijnkwwimushdfhtvmhiw on {{%formie_fields}} (syncId) ... done (time: 0.005s)
    > add foreign key fk_qnjkjbzcdhuafnjtzcjsjypscqwzhucwjqua: {{%formie_fieldlayout_pages}} (layoutId) references {{%formie_fieldlayouts}} (id) ... done (time: 0.008s)
    > add foreign key fk_joemouevjenbalpsyuctjrywjeuumoarvamj: {{%formie_fieldlayout_rows}} (layoutId) references {{%formie_fieldlayouts}} (id) ... done (time: 0.010s)
    > add foreign key fk_eziiqnhqpcattovobgyjrzlwzghxxblflulf: {{%formie_fieldlayout_rows}} (pageId) references {{%formie_fieldlayout_pages}} (id) ... done (time: 0.011s)
    > add foreign key fk_pznltefigaonzkishkzxtojafaobkkxpqwwh: {{%formie_fields}} (layoutId) references {{%formie_fieldlayouts}} (id) ... done (time: 0.013s)
    > add foreign key fk_fqzkweodkxxivhjhniartuwhyunhjlovohny: {{%formie_fields}} (pageId) references {{%formie_fieldlayout_pages}} (id) ... done (time: 0.014s)
    > add foreign key fk_bnwdheexrhjhtocsefrizxwbrpguuptmjmig: {{%formie_fields}} (rowId) references {{%formie_fieldlayout_rows}} (id) ... done (time: 0.014s)
    > add foreign key fk_djxluedbdgvrkxqegtxrpnccnxtopksdtpws: {{%formie_fields}} (syncId) references {{%formie_fields}} (id) ... done (time: 0.015s)
    > create index idx_ghflowsninddhhjpihocwitkqslaymdccjsa on {{%formie_forms}} (layoutId) ... done (time: 0.015s)
    > add foreign key fk_kcnsklysnmsttkkrhevoniqtluqqyicojbtt: {{%formie_forms}} (layoutId) references {{%formie_fieldlayouts}} (id) ... done (time: 0.023s)
    > dropping foreign key on {{%formie_forms}} if it exists ... done (time: 0.012s)
    > dropping index on {{%formie_forms}} if it exists ... done (time: 0.013s)
    > update in {{%elements_sites}} ... done (time: 0.002s)
    > delete from {{%content}} ... done (time: 0.002s)
    > Updated form #998 title to Contact NZ.
    > update in {{%elements_sites}} ... done (time: 0.001s)
    > delete from {{%content}} ... done (time: 0.001s)
    > Updated form #1719 title to Newsletter.
    > update in {{%elements_sites}} ... done (time: 0.001s)
    > delete from {{%content}} ... done (time: 0.001s)
    > Updated form #1720 title to Demo.
    > update in {{%elements_sites}} ... done (time: 0.001s)
    > delete from {{%content}} ... done (time: 0.000s)
    > Updated form #6315 title to Contact AU.
    > update in {{%elements_sites}} ... done (time: 0.000s)
    > delete from {{%content}} ... done (time: 0.000s)
    > Updated form #6316 title to Contact UK.
    > update in {{%elements_sites}} ... done (time: 0.000s)
    > delete from {{%content}} ... done (time: 0.000s)
    > Updated form #6317 title to Contact US.
    > update in {{%elements_sites}} ... done (time: 0.001s)
    > delete from {{%content}} ... done (time: 0.000s)
    > Updated form #6363 title to Job Application.
    > update in {{%elements_sites}} ... done (time: 0.000s)
    > delete from {{%content}} ... done (time: 0.000s)
    > Updated form #7303 title to Sign up.
    > Updating all forms with new field layout.
    > Updated Form contactNZ field layout.
    > Updated Form newsletter field layout.
Exception: The config passed into Component::createComponent() did not specify a class: {"fieldUid":"6c34692f-01f3-4bb5-9497-4ef031b39af1","required":false} (/var/www/html/vendor/craftcms/cms/src/helpers/Component.php:124)
#0 /var/www/html/vendor/verbb/formie/src/services/Fields.php(426): craft\helpers\Component::createComponent(Array, 'verbb\\formie\\ba...')
#1 /var/www/html/vendor/verbb/formie/src/models/FieldLayoutRow.php(95): verbb\formie\services\Fields->createField(Array)
#2 /var/www/html/vendor/yiisoft/yii2/base/Component.php(180): verbb\formie\models\FieldLayoutRow->setFields(Array)
#3 /var/www/html/vendor/yiisoft/yii2/BaseYii.php(558): yii\base\Component->__set('fields', Array)
#4 /var/www/html/vendor/yiisoft/yii2/base/BaseObject.php(107): yii\BaseYii::configure(Object(verbb\formie\models\FieldLayoutRow), Array)
#5 /var/www/html/vendor/craftcms/cms/src/base/Model.php(78): yii\base\BaseObject->__construct(Array)
#6 /var/www/html/vendor/verbb/formie/src/models/FieldLayoutPage.php(118): craft\base\Model->__construct(Array)
#7 /var/www/html/vendor/yiisoft/yii2/base/Component.php(180): verbb\formie\models\FieldLayoutPage->setRows(Array)
#8 /var/www/html/vendor/yiisoft/yii2/BaseYii.php(558): yii\base\Component->__set('rows', Array)
#9 /var/www/html/vendor/yiisoft/yii2/base/BaseObject.php(107): yii\BaseYii::configure(Object(verbb\formie\models\FieldLayoutPage), Array)
#10 /var/www/html/vendor/craftcms/cms/src/base/Model.php(78): yii\base\BaseObject->__construct(Array)
#11 /var/www/html/vendor/verbb/formie/src/models/FieldLayoutPage.php(50): craft\base\Model->__construct(Array)
#12 /var/www/html/vendor/verbb/formie/src/models/FieldLayout.php(70): verbb\formie\models\FieldLayoutPage->__construct(Array)
#13 /var/www/html/vendor/yiisoft/yii2/base/Component.php(180): verbb\formie\models\FieldLayout->setPages(Array)
#14 /var/www/html/vendor/yiisoft/yii2/BaseYii.php(558): yii\base\Component->__set('pages', Array)
#15 /var/www/html/vendor/yiisoft/yii2/base/BaseObject.php(107): yii\BaseYii::configure(Object(verbb\formie\models\FieldLayout), Array)
#16 /var/www/html/vendor/craftcms/cms/src/base/Model.php(78): yii\base\BaseObject->__construct(Array)
#17 /var/www/html/vendor/verbb/formie/src/models/FieldLayout.php(48): craft\base\Model->__construct(Array)
#18 /var/www/html/vendor/verbb/formie/src/migrations/m231125_000000_craft5.php(197): verbb\formie\models\FieldLayout->__construct(Array)
#19 /var/www/html/vendor/verbb/formie/src/migrations/m231125_000000_craft5.php(45): verbb\formie\migrations\m231125_000000_craft5->_addPopulateLayouts()
#20 /var/www/html/vendor/craftcms/cms/src/db/Migration.php(49): verbb\formie\migrations\m231125_000000_craft5->safeUp()
#21 /var/www/html/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(758): craft\db\Migration->up()
#22 /var/www/html/vendor/craftcms/cms/src/console/controllers/MigrateController.php(365): yii\console\controllers\BaseMigrateController->migrateUp('m231125_000000_...')
#23 [internal function]: craft\console\controllers\MigrateController->actionAll()
#24 /var/www/html/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#25 /var/www/html/vendor/yiisoft/yii2/base/Controller.php(178): yii\base\InlineAction->runWithParams(Array)
#26 /var/www/html/vendor/yiisoft/yii2/console/Controller.php(180): yii\base\Controller->runAction('all', Array)
#27 /var/www/html/vendor/craftcms/cms/src/console/ControllerTrait.php(89): yii\console\Controller->runAction('all', Array)
#28 /var/www/html/vendor/yiisoft/yii2/base/Module.php(552): craft\console\controllers\MigrateController->runAction('all', Array)
#29 /var/www/html/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('migrate/all', Array)
#30 /var/www/html/vendor/craftcms/cms/src/console/Application.php(91): yii\console\Application->runAction('migrate/all', Array)
#31 /var/www/html/vendor/yiisoft/yii2/base/Controller.php(212): craft\console\Application->runAction('migrate/all', Array)
#32 /var/www/html/vendor/craftcms/cms/src/console/Controller.php(207): yii\base\Controller->run('migrate/all', Array)
#33 /var/www/html/vendor/craftcms/cms/src/console/controllers/UpController.php(60): craft\console\Controller->run('migrate/all', Array)
#34 [internal function]: craft\console\controllers\UpController->actionIndex()
#35 /var/www/html/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#36 /var/www/html/vendor/yiisoft/yii2/base/Controller.php(178): yii\base\InlineAction->runWithParams(Array)
#37 /var/www/html/vendor/yiisoft/yii2/console/Controller.php(180): yii\base\Controller->runAction('', Array)
#38 /var/www/html/vendor/craftcms/cms/src/console/ControllerTrait.php(89): yii\console\Controller->runAction('', Array)
#39 /var/www/html/vendor/craftcms/cms/src/console/Controller.php(216): craft\console\Controller->traitRunAction('', Array)
#40 /var/www/html/vendor/yiisoft/yii2/base/Module.php(552): craft\console\Controller->runAction('', Array)
#41 /var/www/html/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('up', Array)
#42 /var/www/html/vendor/craftcms/cms/src/console/Application.php(91): yii\console\Application->runAction('up', Array)
#43 /var/www/html/vendor/yiisoft/yii2/console/Application.php(147): craft\console\Application->runAction('up', Array)
#44 /var/www/html/vendor/craftcms/cms/src/console/Application.php(122): yii\console\Application->handleRequest(Object(craft\console\Request))
#45 /var/www/html/vendor/yiisoft/yii2/base/Application.php(384): craft\console\Application->handleRequest(Object(craft\console\Request))
#46 /var/www/html/craft(13): yii\base\Application->run()
#47 {main}

Please let me know if there is any additional information I can provide.

Steps to reproduce

N/A - Was unable to reproduce on fresh install

Form settings

N/A - Forms work correctly, the issue only occurs during the migration.

Craft CMS version

5.0.0

Plugin version

3.0.0-beta.4

Multi-site?

Yes

Additional context

{
"craftcms/ckeditor": "4.0.2",
"craftcms/cms": "^5.0.0",
"craftcms/commerce": "5.0.0-beta.1",
"doublesecretagency/craft-cpcss": "3.0.0",
"doublesecretagency/craft-cpjs": "3.0.0",
"embed/embed": "^v4.4.10",
"ether/simplemap": "v5.0.0-rc1",
"mmikkel/cp-field-inspect": "2.0.0-beta.5",
"nystudio107/craft-retour": "5.0.0-beta.5",
"nystudio107/craft-seomatic": "5.0.0-beta.8",
"php-ffmpeg/php-ffmpeg": "^1.2",
"spicyweb/craft-batch-actions": "2.0.0",
"spicyweb/craft-embedded-assets": "5.0.0-beta.1",
"spicyweb/craft-neo": "5.0.0-beta.2",
"verbb/field-manager": "4.0.0-beta.1",
"verbb/formie": "3.0.0-beta.4",
"verbb/icon-picker": "3.0.0-beta.3",
"verbb/tablemaker": "5.0.0-beta.1",
"verbb/timber": "2.0.0-beta.2",
"vlucas/phpdotenv": "^v5.6.0"
}
engram-design commented 3 months ago

Judging by the {"fieldUid":"6c34692f-01f3-4bb5-9497-4ef031b39af1","required":false} config for a field, it looks like you might've been on the dev-craft-5 branch before an official beta was out, and we had finalized some big field layout changes?

We don't handle a migration from the un-tagged development branch.

benfeather commented 3 months ago

Strange, this site is currently on Craft v4 and hasn't been upgraded until today (I never used the dev or beta versions). Would deleting the forms/fields and recreating them fix this issue?

engram-design commented 3 months ago

Interesting, in that case, let me investigate!

engram-design commented 3 months ago

I should also mention that you need to be on 2.1.5 before upgrading, but the plugin should disallow anything under that as soon as it's loaded. Just wondering if some updates to the field layout haven't been done before the migration.

If you're able to, sending your database to support@verbb.io would be amazing, or at least the formie_newlayout table.

benfeather commented 3 months ago

I've sent the db. All of the plugins were up to date before performing the upgrade.

engram-design commented 3 months ago

Many thanks for sending that though. Looks like some of your forms were using the old field layout format, which they shouldn't have, as whenever you save a form, it'll serialize its old field layout, ready for Formie 3's new field layout changes.

Regardless, fixed for the next release. To get this early, run composer require verbb/formie:"dev-craft-5 as 3.0.0-beta.4".

benfeather commented 3 months ago

Works perfectly, thanks!