tbaddade / redaxo_url

REDAXO 5 AddOn zur URL-Generierung für eigene AddOns (ehemals Url Control, ehemals Frau Schultze)
MIT License
46 stars 22 forks source link

InvalidArgumentException 'Database name can not be empty.' beim Artikel bearbeiten #204

Open omphteliba opened 3 years ago

omphteliba commented 3 years ago

Redaxo: 5.11.2 PHP: 8.0.2

Ich bekomme eine InvalidArgumentException 'Database name can not be empty.' wenn ich versuche einen Artikel zu bearbeiten. Wenn ich das "URL" Addon deaktiviere verschwindet der Fehler.

tbaddade commented 3 years ago

Könntest du bitte den Stack senden?

omphteliba commented 3 years ago

Hallo Thomas, ich hatte schon redaxo_url 1.0.1 deinstalliert und die Beta v2 installiert. Nachdem ich die Beta deinstalliert und die v1.0.1 reinstalliert habe, ist das Problem weg.

tbaddade commented 3 years ago

Wäre gut, wenn du noch die genaue Fehlermeldung senden könntest.

omphteliba commented 3 years ago

Ok, es ist wieder aufgetreten, jetzt bei einem System mit Redaxo 5.11.2 und PHP 7.4.15. Jetzt habe ich auch die Whoops Seite vor mir:

InvalidArgumentException: Database name can not be empty. File: redaxo/src/core/lib/sql/sql.php Line: 155

Stacktrace | Function | File | Line | | ---------------------------------------- | ------------------------------------------------------------- | -------- | | rex_sql::createConnection | redaxo/src/core/lib/sql/sql.php | 126 | | rex_sql->selectDB | redaxo/src/core/lib/sql/sql.php | 98 | | rex_sql->__construct | redaxo/src/core/lib/sql/sql.php | 1776 | | rex_sql::factory | redaxo/src/addons/url/lib/Url/Generator.php | 247 | | Url\Generator::generatePathFile | redaxo/src/addons/url/lib/Url/Generator.php | 668 | | Url\Generator::readPathFile | redaxo/src/addons/url/lib/Url/Generator.php | 661 | | Url\Generator::ensurePaths | redaxo/src/addons/url/lib/Url/Generator.php | 597 | | Url\Generator::getArticleIdByUrlParamKey | redaxo/src/addons/url/lib/Url/Generator.php | 636 | | Url\Generator::rewrite | redaxo/src/addons/url/boot.php | 53 | | rex_package->{closure} | redaxo/src/core/lib/extension.php | 49 | | rex_extension::{closure} | redaxo/src/core/lib/util/timer.php | 54 | | rex_timer::measure | redaxo/src/core/lib/extension.php | 56 | | rex_extension::registerPoint | redaxo/src/addons/structure/functions/function_rex_url.php | 39 | | rex_getUrl | redaxo/src/addons/structure/plugins/version/boot.php | 166 | | rex_package::{closure} | redaxo/src/core/lib/extension.php | 49 | | rex_extension::{closure} | redaxo/src/core/lib/util/timer.php | 54 | | rex_timer::measure | redaxo/src/core/lib/extension.php | 56 | | rex_extension::registerPoint | redaxo/src/addons/structure/plugins/content/pages/content.php | 428 | | include | redaxo/src/core/lib/packages/package.php | 250 | | rex_package->includeFile | redaxo/src/core/lib/be/controller.php | 476 | | rex_be_controller::{closure} | redaxo/src/core/lib/util/timer.php | 54 | | rex_timer::measure | redaxo/src/core/lib/be/controller.php | 477 | | rex_be_controller::includePath | redaxo/src/core/lib/be/controller.php | 415 | | rex_be_controller::includeCurrentPage | redaxo/src/core/backend.php | 235 | | require | redaxo/src/core/boot.php | 137 | | require | redaxo/index.php | 9 |
System report (REDAXO 5.11.2, PHP 7.4.15, MySQL 5.7.33) | REDAXO | | | ------------: | :--------- | | Version | 5.11.2 | | PHP | | | ------------: | :----------------------------- | | Version | 7.4.15 | | OPcache | yes | | Xdebug | no | | Warning | Das Setup wird ohne HTTPS/Verschlüsselung durchgeführt. Es wird empfohlen jegliche Frontend und Backend aufrufe nur mittels HTTPS durchzuführen, um die Privatsphäre und den Datenschutz zu gewährleisten. | | Database | | | ------------: | :----------- | | Version | MySQL 5.7.33 | | Character set | utf8 | | Server | | | ------------: | :------------ | | OS | Linux | | SAPI | fpm-fcgi | | Webserver | Apache/2.4.46 | | Request | | | ------------: | :------------------- | | Browser | Chrome/88.0.4324.182 | | Protocol | HTTP/1.1 | | HTTPS | no | | Packages | | | --------------------------------: | :---------- | | adminer | 1.8.3 | | backup | 2.6.3 | | be_password | 2.0.0 | | be_style | 2.11.1 | | be_style/customizer | 2.11.0 | | be_style/redaxo | 2.11.1 | | bloecks | 3.0.0 | | bloecks/cutncopy | 3.0.0 | | bloecks/dragndrop | 3.0.0 | | bloecks/status | 3.0.0 | | cronjob | 2.7.1 | | cronjob/article_status | 2.7.1 | | cronjob/optimize_tables | 2.7.1 | | developer | 3.9.0 | | feeds | 3.1 | | global_settings | 2.5.1 | | hyphenator | 1.1.7 | | iconpicker | 1.1.0 | | install | 2.8.1 | | maintenance | 2.5.1 | | markitup | 3.6.0 | | mblock | 3.1.0 | | media_manager | 2.10.1 | | media_manager_autorewrite | 2.0.0 | | mediapool | 2.9.1 | | metainfo | 2.7.3 | | mf_lastchanges | 0.9 | | mform | 5.3.1 | | mform/docs | 1.0 | | minify | 2.2 | | modulsammlung | 4.15.2 | | modulsammlung/documentation | 1.0 | | multiupload | 2.1.3 | | multiupload/imageoptimizer | 1.0.1 | | multiupload/upload_precompressor | 1.0 | | navigation_factory | 2.0.3 | | omi_citrix | 1.0.0 | | omi_pardot | 1.0.1 | | omi_sync | 1.0 | | phpmailer | 2.9.1 | | project | dev | | redactor2 | 4.1.0 | | structure | 2.11.2 | | structure/content | 2.11.2 | | structure/history | 2.11.0 | | structure/version | 2.11.0 | | template | 1.1.0 | | theme | 1.2.0 | | ui_tools | 1.0.0 | | ui_tools/bootstrap-datetimepicker | 4.17.47 | | ui_tools/custom_widgets | 1.0.0 | | ui_tools/jquery-minicolors | 2.2.7 | | ui_tools/selectize | 0.2.0 | | url | 1.0.1 | | users | 2.7.1 | | watson | 2.2.0 | | xcore | 1.1.4 | | xoutputfilter | 3.0.0-beta1 | | xoutputfilter/abbrev | 3.0.0 | | xoutputfilter/backend | 3.0.0 | | xoutputfilter/documentation | 1.0.0 | | xoutputfilter/frontend | 3.0.0 | | xoutputfilter/import_export | 3.0.0 | | xoutputfilter/languages | 3.0.0 | | yform | 3.4.1 | | yform/docs | 3.3.1 | | yform/email | 3.4.1 | | yform/manager | 3.4.1 | | yform/tools | 3.4.1 | | yform_usability | 1.4 | | yrewrite | 2.7 | | yrewrite/lowercase-url | 1.0 |
omphteliba commented 3 years ago

Und hier habe ich auch noch den Systembericht:

System report (REDAXO 5.11.2, PHP 7.4.15, MySQL 5.7.33) | REDAXO | | | ------------: | :--------- | | Version | 5.11.2 | | PHP | | | ------------: | :----------------------------- | | Version | 7.4.15 | | OPcache | yes | | Xdebug | no | | Warning | Das Setup wird ohne HTTPS/Verschlüsselung durchgeführt. Es wird empfohlen jegliche Frontend und Backend aufrufe nur mittels HTTPS durchzuführen, um die Privatsphäre und den Datenschutz zu gewährleisten. | | Database | | | ------------: | :----------- | | Version | MySQL 5.7.33 | | Character set | utf8 | | Server | | | ------------: | :------------ | | OS | Linux | | SAPI | fpm-fcgi | | Webserver | Apache/2.4.46 | | Request | | | ------------: | :------------------- | | Browser | Chrome/88.0.4324.182 | | Protocol | HTTP/1.1 | | HTTPS | no | | Packages | | | --------------------------------: | :---------- | | adminer | 1.8.3 | | backup | 2.6.3 | | be_password | 2.0.0 | | be_style | 2.11.1 | | be_style/customizer | 2.11.0 | | be_style/redaxo | 2.11.1 | | bloecks | 3.0.0 | | bloecks/cutncopy | 3.0.0 | | bloecks/dragndrop | 3.0.0 | | bloecks/status | 3.0.0 | | cronjob | 2.7.1 | | cronjob/article_status | 2.7.1 | | cronjob/optimize_tables | 2.7.1 | | developer | 3.9.0 | | feeds | 3.1 | | global_settings | 2.5.1 | | hyphenator | 1.1.7 | | iconpicker | 1.1.0 | | install | 2.8.1 | | maintenance | 2.5.1 | | markitup | 3.6.0 | | mblock | 3.1.0 | | media_manager | 2.10.1 | | media_manager_autorewrite | 2.0.0 | | mediapool | 2.9.1 | | metainfo | 2.7.3 | | mf_lastchanges | 0.9 | | mform | 5.3.1 | | mform/docs | 1.0 | | minify | 2.2 | | modulsammlung | 4.15.2 | | modulsammlung/documentation | 1.0 | | multiupload | 2.1.3 | | multiupload/imageoptimizer | 1.0.1 | | multiupload/upload_precompressor | 1.0 | | navigation_factory | 2.0.3 | | omi_citrix | 1.0.0 | | omi_pardot | 1.0.1 | | omi_sync | 1.0 | | phpmailer | 2.9.1 | | project | dev | | redactor2 | 4.1.0 | | structure | 2.11.2 | | structure/content | 2.11.2 | | structure/history | 2.11.0 | | structure/version | 2.11.0 | | template | 1.1.0 | | theme | 1.2.0 | | ui_tools | 1.0.0 | | ui_tools/bootstrap-datetimepicker | 4.17.47 | | ui_tools/custom_widgets | 1.0.0 | | ui_tools/jquery-minicolors | 2.2.7 | | ui_tools/selectize | 0.2.0 | | url | 1.0.1 | | users | 2.7.1 | | watson | 2.2.0 | | xcore | 1.1.4 | | xoutputfilter | 3.0.0-beta1 | | xoutputfilter/abbrev | 3.0.0 | | xoutputfilter/backend | 3.0.0 | | xoutputfilter/documentation | 1.0.0 | | xoutputfilter/frontend | 3.0.0 | | xoutputfilter/import_export | 3.0.0 | | xoutputfilter/languages | 3.0.0 | | yform | 3.4.1 | | yform/docs | 3.3.1 | | yform/email | 3.4.1 | | yform/manager | 3.4.1 | | yform/tools | 3.4.1 | | yform_usability | 1.4 | | yrewrite | 2.7 | | yrewrite/lowercase-url | 1.0 |
tbaddade commented 3 years ago

Greifst du auf eine zweite Datenbank zu? Könntest du unabhängig davon einmal hier $table dumpen und das Ergebnis hier posten?

omphteliba commented 3 years ago

Ich habe zwei Datenbanken verwendet, bin aber grade dabei das rückgängig zu machen.

Hier der Dump von rex_url_generate

`INSERT INTO `rex_url_generate` (`id`, `article_id`, `clang_id`, `url`, `table`, `table_parameters`, `relation_table`, `relation_table_parameters`, `relation_insert`, `createdate`, `createuser`, `updatedate`, `updateuser`) VALUES
(1, 109,    1,  '', '1_xxx_rex_jobs',   '{\"1_xxx_rex_jobs_field_1\":\"id\",\"1_xxx_rex_jobs_field_2\":\"titel\",\"1_xxx_rex_jobs_field_3\":\"\",\"1_xxx_rex_jobs_id\":\"id\",\"1_xxx_rex_jobs_clang_id\":\"\",\"1_xxx_rex_jobs_restriction_field\":\"\",\"1_xxx_rex_jobs_restriction_operator\":\"=\",\"1_xxx_rex_jobs_restriction_value\":\"\",\"1_xxx_rex_jobs_url_param_key\":\"\",\"1_xxx_rex_jobs_seo_title\":\"titel\",\"1_xxx_rex_jobs_seo_description\":\"description\",\"1_xxx_rex_jobs_seo_image\":\"\",\"1_xxx_rex_jobs_sitemap_add\":\"0\",\"1_xxx_rex_jobs_sitemap_frequency\":\"always\",\"1_xxx_rex_jobs_sitemap_priority\":\"1.0\",\"1_xxx_rex_jobs_sitemap_lastmod\":\"\",\"1_xxx_rex_jobs_path_names\":\"\",\"1_xxx_rex_jobs_path_categories\":\"0\",\"1_xxx_rex_jobs_relation_field\":\"\"}',   '', '[]',   'before',   2017,   'omikron',  2021,   'oh');`
tbaddade commented 3 years ago

Ich habe zwei Datenbanken verwendet, bin aber grade dabei das rückgängig zu machen.

Dann mach das erst einmal. Es sieht für mich danach aus, dass du eine DB ausgewählt hast, wo die zugehörigen Daten unvollständig sind.

omphteliba commented 3 years ago

Dann mach das erst einmal.

Ist auf dem System schon vollzogen.

Es sieht für mich danach aus, dass du eine DB ausgewählt hast, wo die zugehörigen Daten unvollständig sind.

Was meinst Du damit? Daten in der Tabelle oder Tabellen-Struktur?

Ich habe redaxo_url gelöscht und neu installiert. Damit ist der obige Fehler verschwunden, aber ich kann jetzt keine neuen Einträge in "Urls generieren" anlegen.

omphteliba commented 3 years ago

Ich habe im Redaxo Log noch was entdeckt, was auftritt bevor ich den Whoops im Frontend sehe:

image

Stammt dieser "offset 2" von der zweiten Datenbank und ist irgendwo gecacht, weil mal die zweite Datenbank benutzt wurde?

omphteliba commented 3 years ago

Ich habe einen Workaround gefunden: ich habe in der Redaxo config den einzigen Datenbank Eintrag unter der Nummer 2 nochmal eingefügt. Dann geht auch die Weiterleitung und das Whoops ist verschwunden.

tbaddade commented 3 years ago

Ich denke das ist hier recht speziell und würde erst einmal schließen. Falls weiterhin Probleme da sind, gerne wieder öffnen.

ynamite commented 1 year ago

@tbaddade ich habe das Problem nun auch, genau gleicher Fehler. Allerdings ist das eine frische Installation, ohne zweite Datenbank ...

Hoffentlich hilft dir das:

InvalidArgumentException: Database name can not be empty. File: redaxo/src/core/lib/sql/sql.php Line: 180

Stacktrace | Function | File | Line | | -------------------------------------------- | -------------------------------------------------- | -------- | | rex_sql::createConnection | redaxo/src/core/lib/sql/sql.php | 127 | | rex_sql->selectDB | redaxo/src/core/lib/sql/sql.php | 156 | | rex_sql->getConnection | redaxo/src/core/lib/sql/sql.php | 1229 | | rex_sql->getArray | redaxo/src/core/lib/sql/sql.php | 1779 | | rex_sql->fetchTablesAndViews | redaxo/src/core/lib/sql/sql.php | 1721 | | rex_sql->getTablesAndViews | redaxo/src/addons/url/lib/Url/Database.php | 47 | | Url\Database::getSupportedTables | redaxo/src/addons/url/pages/generator.profiles.php | 382 | | require | redaxo/src/core/lib/packages/package.php | 233 | | rex_package->includeFile | redaxo/src/core/lib/be/controller.php | 503 | | rex_be_controller::{closure} | redaxo/src/core/lib/util/timer.php | 62 | | rex_timer::measure | redaxo/src/core/lib/be/controller.php | 485 | | rex_be_controller::includePath | redaxo/src/core/lib/be/controller.php | 453 | | rex_be_controller::includeCurrentPageSubPath | redaxo/src/addons/url/pages/index.php | 17 | | require | redaxo/src/core/lib/packages/package.php | 233 | | rex_package->includeFile | redaxo/src/core/lib/be/controller.php | 503 | | rex_be_controller::{closure} | redaxo/src/core/lib/util/timer.php | 62 | | rex_timer::measure | redaxo/src/core/lib/be/controller.php | 485 | | rex_be_controller::includePath | redaxo/src/core/lib/be/controller.php | 436 | | rex_be_controller::includeCurrentPage | redaxo/src/core/backend.php | 241 | | require | redaxo/src/core/boot.php | 155 | | require | redaxo/index.php | 10 |
System report (REDAXO 5.15.1, PHP 8.2.4, MariaDB 10.3.38) | REDAXO | | | ------------: | :--------- | | Version | 5.15.1 | | PHP | | | ------------: | :--------- | | Version | 8.2.4 | | OPcache | yes | | Xdebug | no | | Database | | | ------------: | :-------------- | | Version | MariaDB 10.3.38 | | Character set | utf8 | | Server | | | ------------: | :--------- | | OS | Linux | | SAPI | cgi-fcgi | | Webserver | Apache | | Request | | | ------------: | :------------ | | Browser | Firefox/111.0 | | Protocol | HTTP/1.0 | | HTTPS | yes | | Packages | | | --------------------------------: | :--------- | | adminer | 1.9.3 | | article_presets | 1.2.0 | | backup | 2.9.0 | | be_password | 2.0.1 | | be_style | 3.2.0 | | be_style/customizer | 3.2.0 | | be_style/redaxo | 3.2.0 | | be_tools | 1.7.8 | | bloecks | 3.1.1 | | bloecks/cutncopy | 3.1.1 | | bloecks/dragndrop | 3.1.1 | | bloecks/status | 3.1.1 | | bs5_iconpicker | 1.0.5 | | clear_content | 1.1.1 | | consent_manager | 4.0.3 | | cropper | 1.4.0 | | developer | 3.9.2 | | focuspoint | 4.0.4 | | hyphenator | 1.3.0 | | install | 2.11.1 | | massif | 1.0.0 | | massif_minify | 1.3.3 | | massif_settings | 1.0.0 | | mblock | 3.4.12 | | media_manager | 2.14.0 | | media_manager_responsive | 1.1.4 | | media_negotiator | 2.0.0 | | mediapool | 2.13.0 | | metainfo | 2.10.0 | | mform | 7.2.8 | | phpmailer | 2.12.0 | | plyr | 3.20.5 | | project | dev | | speed_up | 1.3.1 | | sprog | 1.5.1 | | statistics | 2.6.0 | | statistics/media | 2.6.0 | | structure | 2.15.0 | | structure/content | 2.15.0 | | structure/history | 2.15.0 | | structure_tweaks | 1.4.0 | | theme | 1.3.3 | | theme_lock | 1.0.0 | | tinymce5 | 1.2.17 | | ui_tools | 1.2.2 | | ui_tools/bootstrap-datetimepicker | 4.17.47 | | ui_tools/jquery-minicolors | 2.4.0 | | ui_tools/selectize | 0.2.0 | | uploader | 2.4.1 | | url | 2.1.0 | | useragent | 2.3.0 | | users | 2.10.0 | | yform | 4.1.0 | | yform/email | 4.1.0 | | yform/manager | 4.1.0 | | yform/tools | 4.1.0 | | yform_adminer | 1.2.0 | | yform_geo_osm | 1.2.8 | | yform_quick_edit | 1.0.1 | | yform_spam_protection | 2.0-beta4 | | yform_usability | 2.0.9 | | yrewrite | 2.10.0 |
ynamite commented 1 year ago

Wenn ich wie von @omphteliba vorgeschlagen bei der zweiten DB dieselbe DB-Credentials wie bei der ersten eintrage, klappt's. Aber wie geschrieben, es war gar nie eine zweite im Einsatz ... hm.

alxndr-w commented 1 year ago

Wurde eine leere 2. Datenbank in der config.yml definiert? So wie hier:

https://github.com/redaxo/redaxo/blob/b88ed5891e159773b8324e33f9602e1ad19d850e/redaxo/src/core/default.config.yml#L92-L100

Und wenn man die leere Verbindung löscht, ist dann das Problem gelöst?

ynamite commented 1 year ago

Muss ich testen. Aber ist in der config.yml nicht per default eine zweite, leere Verbindung vorgegeben?

ynamite commented 1 year ago

@alxndr-w nope, geht nicht wenn die zweite Verbindung fehlt.