verbb / formie

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

Craft 5 migration failing #1756

Closed d-karstens closed 6 months ago

d-karstens commented 6 months ago

Describe the bug

Hi,

Have just tried to upgrade one of our smaller sites to the Craft 5 beta to try it out and encountered the following migration error related to submissions

One of Formie’s migrations failed.

yii\base\ErrorException: Array to string conversion

Migration: verbb\formie\migrations\m231125_000000_craft5

Output:

> create table {{%formie_fieldlayouts}} ... done (time: 0.002s)
> create table {{%formie_fieldlayout_pages}} ... done (time: 0.002s)
> create table {{%formie_fieldlayout_rows}} ... done (time: 0.001s)
> create table {{%formie_fields}} ... done (time: 0.002s)
> add column layoutId integer AFTER settings to table {{%formie_forms}} ... done (time: 0.002s)
> add column content json AFTER id to table {{%formie_submissions}} ... done (time: 0.002s)
> dropping foreign key on {{%formie_forms}} if it exists ... done (time: 0.000s)
> dropping index on {{%formie_forms}} if it exists ... done (time: 0.000s)
> create index idx_vcysidovnztakxfargykisxdzapojfivnect on {{%formie_fieldlayout_pages}} (layoutId) ... done (time: 0.002s)
> create index idx_usgvsshnkujiwvwghviofihpyukjtxzogcnq on {{%formie_fieldlayout_rows}} (layoutId) ... done (time: 0.002s)
> create index idx_tciyxnywwrkggnubgnfeuhjsgrtzxkgflfao on {{%formie_fieldlayout_rows}} (pageId) ... done (time: 0.002s)
> create index idx_xeyyqshbzqrbziyggtxzcjzvndwvnslcijit on {{%formie_fields}} (layoutId) ... done (time: 0.002s)
> create index idx_pqynzjrukfnbsrkiivmxvrctfltuornthukv on {{%formie_fields}} (pageId) ... done (time: 0.002s)
> create index idx_orveirnfgylcvzaetqvviyifkwtbaejxlynu on {{%formie_fields}} (rowId) ... done (time: 0.002s)
> create index idx_sgjaixdlwnqqlpdcijijfgkvbogddikmunbb on {{%formie_fields}} (handle) ... done (time: 0.002s)
> create index idx_lnfyhqvpmpktlyzhrjsllwgzpphumqjoexvh on {{%formie_fields}} (syncId) ... done (time: 0.002s)
> add foreign key fk_ixotynsfeudutsphuvcucheacsdsowzuvtbi: {{%formie_fieldlayout_pages}} (layoutId) references {{%formie_fieldlayouts}} (id) ... done (time: 0.005s)
> add foreign key fk_ggafapfleytgnjlbwnocpjpsglesqmkjgteq: {{%formie_fieldlayout_rows}} (layoutId) references {{%formie_fieldlayouts}} (id) ... done (time: 0.008s)
> add foreign key fk_frtcvyotisisvnakpipehhahzbcoieiqnurj: {{%formie_fieldlayout_rows}} (pageId) references {{%formie_fieldlayout_pages}} (id) ... done (time: 0.009s)
> add foreign key fk_rdkavqfocpsrdxelgpjetanqpbkmlnwphdjh: {{%formie_fields}} (layoutId) references {{%formie_fieldlayouts}} (id) ... done (time: 0.010s)
> add foreign key fk_vjvxskqeilztjcnmacohmlqrmhdluftsoors: {{%formie_fields}} (pageId) references {{%formie_fieldlayout_pages}} (id) ... done (time: 0.009s)
> add foreign key fk_jayejkavrkdouvevurrhnxmfmwchapexrcvb: {{%formie_fields}} (rowId) references {{%formie_fieldlayout_rows}} (id) ... done (time: 0.007s)
> add foreign key fk_itckzmzdhazjgbrliooghddkgquxktkpbncw: {{%formie_fields}} (syncId) references {{%formie_fields}} (id) ... done (time: 0.007s)
> create index idx_cffvepgsoxmpfgrnockorlrmmlxdifqltcye on {{%formie_forms}} (layoutId) ... done (time: 0.003s)
> add foreign key fk_ngapcyfucrashqliagitaiqnicnxtrjdenrv: {{%formie_forms}} (layoutId) references {{%formie_fieldlayouts}} (id) ... done (time: 0.008s)
> dropping foreign key on {{%formie_forms}} if it exists ... done (time: 0.003s)
> dropping index on {{%formie_forms}} if it exists ... done (time: 0.003s)
> update in {{%elements_sites}} ... done (time: 0.001s)
> delete from {{%content}} ... done (time: 0.000s)
> Updated form #1461 title to Subscribe.
> update in {{%elements_sites}} ... done (time: 0.000s)
> Updated submission #1462 title to 2024-02-21 14:35:08.
> update in {{%elements_sites}} ... done (time: 0.000s)
> Updated submission #1463 title to 2024-02-21 14:57:54.
> update in {{%elements_sites}} ... done (time: 0.000s)
> Updated submission #1464 title to 2024-02-21 15:02:20.
> update in {{%elements_sites}} ... done (time: 0.000s)
> Updated submission #1465 title to 2024-02-21 15:02:26.
> update in {{%elements_sites}} ... done (time: 0.000s)
> Updated submission #1466 title to 2024-02-21 15:02:57.
> update in {{%elements_sites}} ... done (time: 0.000s)
> Updated submission #1498 title to 2024-02-21 16:54:55.
> update in {{%elements_sites}} ... done (time: 0.000s)
> Updated submission #1872 title to 2024-02-29 16:35:28.
> update in {{%elements_sites}} ... done (time: 0.000s)
> Updated submission #1873 title to 2024-02-29 16:35:34.
> update in {{%elements_sites}} ... done (time: 0.000s)
> Updated submission #1876 title to 2024-02-29 16:36:23.
> update in {{%elements_sites}} ... done (time: 0.000s)
> Updated submission #1878 title to 2024-02-29 16:45:23.
> update in {{%elements_sites}} ... done (time: 0.000s)
> Updated submission #1880 title to 2024-02-29 16:49:03.
> Updating all forms with new field layout.
> Updated Form subscribe field layout.
> Updating all forms with new template field layout.
> Updating Submission content to JSON.
Exception: Array to string conversion (/var/www/html/vendor/yiisoft/yii2/db/ColumnSchema.php:168)
#0 /var/www/html/vendor/craftcms/cms/src/web/ErrorHandler.php(79): yii\base\ErrorHandler->handleError(2, 'Array to string...', '/var/www/html/v...', 168)
#1 /var/www/html/vendor/yiisoft/yii2/db/ColumnSchema.php(168): craft\web\ErrorHandler->handleError(2, 'Array to string...', '/var/www/html/v...', 168)
#2 /var/www/html/vendor/craftcms/cms/src/db/mysql/ColumnSchema.php(36): yii\db\ColumnSchema->typecast(Array)
#3 /var/www/html/vendor/yiisoft/yii2/db/mysql/ColumnSchema.php(49): craft\db\mysql\ColumnSchema->typecast(Array)
#4 /var/www/html/vendor/yiisoft/yii2/db/QueryBuilder.php(652): yii\db\mysql\ColumnSchema->dbTypecast(Array)
#5 /var/www/html/vendor/yiisoft/yii2/db/QueryBuilder.php(630): yii\db\QueryBuilder->prepareUpdateSets('{{%formie_submi...', Array, Array)
#6 /var/www/html/vendor/yiisoft/yii2/db/Command.php(591): yii\db\QueryBuilder->update('{{%formie_submi...', Array, Array, Array)
#7 /var/www/html/vendor/craftcms/cms/src/db/Command.php(152): yii\db\Command->update('{{%formie_submi...', Array, Array, Array)
#8 /var/www/html/vendor/craftcms/cms/src/helpers/Db.php(1072): craft\db\Command->update('{{%formie_submi...', Array, Array, Array, true)
#9 /var/www/html/vendor/verbb/formie/src/migrations/m231125_000000_craft5.php(264): craft\helpers\Db::update('{{%formie_submi...', Array, Array)
#10 /var/www/html/vendor/verbb/formie/src/migrations/m231125_000000_craft5.php(53): verbb\formie\migrations\m231125_000000_craft5->_migrateSubmissionContent()
#11 /var/www/html/vendor/craftcms/cms/src/db/Migration.php(49): verbb\formie\migrations\m231125_000000_craft5->safeUp()
#12 /var/www/html/vendor/craftcms/cms/src/db/MigrationManager.php(233): craft\db\Migration->up(true)
#13 /var/www/html/vendor/craftcms/cms/src/db/MigrationManager.php(149): craft\db\MigrationManager->migrateUp(Object(verbb\formie\migrations\m231125_000000_craft5))
#14 /var/www/html/vendor/craftcms/cms/src/services/Updates.php(252): craft\db\MigrationManager->up()
#15 /var/www/html/vendor/craftcms/cms/src/controllers/BaseUpdaterController.php(499): craft\services\Updates->runMigrations(Array)
#16 /var/www/html/vendor/craftcms/cms/src/controllers/UpdaterController.php(207): craft\controllers\BaseUpdaterController->runMigrations(Array, 'restore-db')
#17 [internal function]: craft\controllers\UpdaterController->actionMigrate()
#18 /var/www/html/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#19 /var/www/html/vendor/yiisoft/yii2/base/Controller.php(178): yii\base\InlineAction->runWithParams(Array)
#20 /var/www/html/vendor/yiisoft/yii2/base/Module.php(552): yii\base\Controller->runAction('migrate', Array)
#21 /var/www/html/vendor/craftcms/cms/src/web/Application.php(349): yii\base\Module->runAction('updater/migrate', Array)
#22 /var/www/html/vendor/craftcms/cms/src/web/Application.php(737): craft\web\Application->runAction('updater/migrate')
#23 /var/www/html/vendor/craftcms/cms/src/web/Application.php(245): craft\web\Application->_processUpdateLogic(Object(craft\web\Request))
#24 /var/www/html/vendor/yiisoft/yii2/base/Application.php(384): craft\web\Application->handleRequest(Object(craft\web\Request))
#25 /var/www/html/web/index.php(13): yii\base\Application->run()
#26 {main}

If it helps, our submissions only have an email field and a hidden field with some text

Let me know if you need any more details

Thanks!

Steps to reproduce

  1. Upgrade to Craft 5 beta on an existing Craft 4 install
  2. Attempt to run migration

Form settings

Craft CMS version

5.0.0-beta.6

Plugin version

3.0.0-beta.3

Multi-site?

No

Additional context

No response

engram-design commented 6 months ago

What database engine are you using? I think this might be fixed for the next release. To get this early, run composer require verbb/formie:"dev-craft-5 as 3.0.0-beta.3".

d-karstens commented 6 months ago

Looks like that's worked, thank you!

We're using MariaDB 10.4.32 on ddev

engram-design commented 6 months ago

Yep, looks like we still need to handle MariaDB in a specific way for JSON columns, which this addresses.

engram-design commented 6 months ago

Fixed in 3.0.0-beta.4