FriendsOfREDAXO / yform_usability

Ergänzt YForm um nützliche Funktionen wie Drag & Drop und Status On/Off.
MIT License
42 stars 3 forks source link

Whoops beim Installieren: Column "partial" can not be placed after "choice_attributes", because that column does not exist. #137

Closed alxndr-w closed 1 year ago

alxndr-w commented 1 year ago

Description / Beschreibung Column "partial" can not be placed after "choice_attributes", because that column does not exist.

Affected versions / Verwendete Versionen

REDAXO: 5.14 PHP: 7.4 Database: Browser: AddOns: YForm 3.x

Did it whoops? / Whoops erhalten? InvalidArgumentException: Column "partial" can not be placed after "choice_attributes", because that column does not exist. File: redaxo/src/core/lib/sql/table.php Line: 906

Stacktrace | Function | File | Line | | --------------------------------------- | ---------------------------------------------------------- | -------- | | rex_sql_table->setPosition | redaxo/src/core/lib/sql/table.php | 274 | | rex_sql_table->addColumn | redaxo/src/core/lib/sql/table.php | 289 | | rex_sql_table->ensureColumn | redaxo/src/addons/.new.yform_usability/install.php | 25 | | require | redaxo/src/core/lib/packages/package.php | 284 | | rex_package->includeFile | redaxo/src/addons/.new.yform_usability/update.php | 4 | | require | redaxo/src/core/lib/packages/package.php | 280 | | rex_package->includeFile | redaxo/src/addons/install/lib/package/package_update.php | 63 | | rex_install_package_update->doAction | redaxo/src/addons/install/lib/package/package_download.php | 44 | | rex_install_package_download->run | redaxo/src/addons/install/lib/api/api_package_update.php | 21 | | rex_api_install_package_update->execute | redaxo/src/core/lib/api_function.php | 179 | | rex_api_function::handleCall | redaxo/src/core/backend.php | 235 | | require | redaxo/src/core/boot.php | 143 | | require | redaxo/index.php | 9 |
System report (REDAXO 5.14.1, PHP 7.4.33, MySQL 5.7.41) | REDAXO | | | ------------: | :--------- | | Version | 5.14.1 | | PHP | | | ------------: | :----------------------------- | | Version | 7.4.33 | | OPcache | yes | | Xdebug | no | | Warning | Die verwendete PHP-Version 7.4.33 wird nicht mehr vom Hersteller gepflegt und sollte aktualisiert werden. | | Database | | | ------------: | :----------- | | Version | MySQL 5.7.41 | | Character set | utf8 | | Server | | | ------------: | :--------- | | OS | Linux | | SAPI | fpm-fcgi | | Webserver | Apache | | Request | | | ------------: | :--------------- | | Browser | Chrome/111.0.0.0 | | Protocol | HTTP/1.1 | | HTTPS | yes | | Packages | | | ----------------------: | :--------- | | backup | 2.8.2 | | be_style | 3.1.0 | | be_style/customizer | 3.1.0 | | be_style/redaxo | 3.1.0 | | bloecks | 3.1.1 | | bloecks/cutncopy | 3.1.1 | | bloecks/dragndrop | 3.1.1 | | bloecks/status | 3.1.1 | | cronjob | 2.9.0 | | cronjob/article_status | 2.8.1 | | cronjob/optimize_tables | 2.8.1 | | developer | 3.9.2 | | install | 2.10.0 | | markitup | 3.7.4 | | media_manager | 2.13.2 | | mediapool | 2.12.0 | | metainfo | 2.9.0 | | phpmailer | 2.11.2 | | project | dev | | structure | 2.14.1 | | structure/content | 2.14.1 | | structure/history | 2.14.1 | | users | 2.9.0 | | yform | 3.4.2 | | yform/email | 3.4.2 | | yform/manager | 3.4.2 | | yform/rest | 3.4.2 | | yform/tools | 3.4.2 | | yform_spam_protection | 1.2.3 | | yrewrite | 2.9.1 |
alxndr-w commented 1 year ago

@gharlan eigentlich hätte die Installation hier verhindert werden müssen:

https://github.com/FriendsOfREDAXO/yform_usability/blob/7d929cb979bb6336dfa9a1736a4772ac09c167c0/package.yml#L12

Wird die install.php vor oder nach der Prüfung ausgeführt?

gharlan commented 1 year ago

Wird die install.php vor oder nach der Prüfung ausgeführt?

Zunächst werden die Abhängigkeiten geprüft, dann die update.php ausgeführt (die ggf. die install.php aufruft). https://github.com/redaxo/redaxo/blob/main/redaxo/src/addons/install/lib/package/package_update.php#L54-L61 (Z. 54 die Abhängigkeitsprüfung, Z. 61 die update.php)

Wie man dort sieht, werden die Abhängigkeiten aber nur geprüft, wenn das Addon auch aktiviert ist. Ansonsten werden die erst bei Reaktivierung geprüft. Die update.php hingegen wird ausgeführt, wenn das Addon installiert ist (egal ob aktiviert oder nicht).

Das wird hier dann wohl das Problem sein. Bisher führte das zu keinen Problemen. Spontan weiß ich nicht, wie man es löst. Abhängigkeiten auch prüfen, wenn nicht aktiviert, ist eigentlich auch blöd. Weil teilweise lassen sich durch kurze Deaktivierung ja gerade Abhängigkeitsschleifen lösen.

alxndr-w commented 1 year ago

Es scheint auch nicht zu weiteren Problemen bei anderen zu kommen.

Ein möglicher Fix wäre, dass das Feld eben nicht hinter choice_attributes, sondern hinter ein anderes geschrieben wird.