Fixed
Project:
Drupal core
Version:
main
Component:
install system
Priority:
Critical
Category:
Bug report
Assigned:
Unassigned
Issue tags:
Reporter:
Created:
7 Aug 2026 at 13:08 UTC
Updated:
14 Sep 2026 at 14:19 UTC
Jump to comment: Most recent, Most recent file
Comments
Comment #3
catchThat seems to be enough.
Comment #4
catchAlthough it's postponed on #3614153: Install system module alongside other modules in the installer.
Comment #5
catchComment #6
catchRebased and added a change record.
Comment #7
nicxvan commentedSo container_needs_rebuild will rebuild the container anyway. Do we need to worry about order of install? I don't think so since the connection will get the right driver.
I made a minor tweak to the CR.
Comment #8
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #9
daffie commentedThe code changes look good to me.
Created #3618797: Replace _install_get_database_module_name() by Database::getConnection()->getProvider() as a followup to remove the helper method.
For me it is RTBC.
Comment #10
godotislateNW for merge conflict.
Comment #11
catchRebased.
Comment #12
godotislateComments on the MR.
Comment #13
catchApplied one suggestion, went a slightly different way with the second.
Comment #15
godotislateApplied a fix to the docblock return type and Committed 0257916 and pushed to main. Thanks!
If this is to go to 11.x, it'll need a new MR because of merge conflicts.
Comment #16
catchThis depends on #3614153: Install system module alongside other modules in the installer which we left as main-only, so we'll need to do the same here too.
Comment #18
quietone commentedUpdate change record and publish, correcting date.
Comment #19
godotislateThis may have broken mysqli tests: https://git.drupalcode.org/project/drupal/-/pipelines/936533
Comment #21
godotislateCreated a revert MR https://git.drupalcode.org/project/drupal/-/merge_requests/17004
This fixed all of the mysqli tests except for one (https://git.drupalcode.org/project/drupal/-/jobs/11985707), so not sure reverting on
mainwill help that much until the source of the other failure is found.Comment #22
catchSwitched to mysqli locally and ran various installer tests and can't reproduce a failure against HEAD yet.
Comment #24
catchTook a closer look. The existing config installer tests manually add the database driver to the config, but they only do the driver, not the driver's dependencies.
There were two possible places to fix this (see reverted commit in the tests):
1. In the existig config installer base class - we could add the dependent driver there were the driver itself gets added to the config.
2. We can explicitly add the driver's dependencies in the installer itself just before it gets installed.
Manual install with mysqli works completely fine so I'm not sure how much this is a test-specific problem or could somehow break actual installs, but it seems more robust to handle dependencies explicitly in the installer, prior to the main change here they were handle implicitly.
Comment #25
catchActually #24.2 doesn't fix those tests, so it looks like this is indeed test specific and we should do #24.1
There's already a follow-up for the installer code here because what we have is still somewhat pre-database-drivers-as-modules so we could probably look into being more explicit about module dependencies there #3618797: Replace _install_get_database_module_name() by Database::getConnection()->getProvider().
Comment #26
catchAlso looked at generic test. The failure is due to #3615570: Optimize GenericModuleTestBase. Before that issue, we would assert something just when installing the module, and that would be the only assertion to happen for mysqli because it's a database driver module and also hidden. Now that first assertion doesn't happen so the test got marked as risky. We need to mark it skipped for hidden database driver modules. Since that's a one-liner, added it in here too so we can get to a fully green mysqli test run.
Comment #27
daffie commentedBoth changes look good to me.
For me those are RTBC.
I ran into the same problems when working on #3609986: Improve database exception messages.
Comment #29
godotislateCommitted 35e3299 and pushed to main. Thanks!
Comment #31
daffie commentedI am working on #3615690: Removal of unnecessary savepoints from PostgreSQL and I am getting test failures, because the module that is providing the database driver does not get installed as the first module. Therefore it not able to override any call to hook_schema() or any 'backend_overridable' service. The code
$kernel->getContainer()->get('module_installer')->install([$provider], TRUE);installs the database driver module and that line has been removed.Edit: The following commit fixes the problem: https://git.drupalcode.org/project/drupal/-/merge_requests/16629/diffs?c....
Comment #33
catchI've pulled @daffie's commit into an MR here.
I wondered if it would be simpler to add the database driver after sorting instead of before, so we can just put it at the beginning once instead of twice, but then we wouldn't get the weight for the file info. Probably needs #2968232: Deprecate module weights then we can delete that whole section instead.
Comment #34
daffie commentedAll code changes look good to me.
For me it is RTBC.
Comment #36
godotislateCommitted 0f9a918 and pushed to main. Thanks!