[8.x] DB command: Cope with missing driver parameters for mysql #39582
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The problem
We don't expose our mysql installation via unix sockets (we only use network connections). Therefore our mysql config in
config/database.php
does not have aunix_socket
entry.This was causing the DB command to fail:
Discussion
As the unix socket is not necessarily required to connect to a mysql database, it seems sensible to ignore it if it's not present rather than throwing an error. The charset is also not required to connect.
Implementation
I have used the null coalescence operator to supply a blank string as default, which means
getOptionalArguments()
will filter it out and the socket/charset arguments won't be passed in the command string.A similar change might be applicable for the other database drivers, but I do not have as much experience with them and don't have any instances to test against, so I have not changed those methods.
Testing
I've tested this locally against our mysql 8 installation and it works. I could not find any relevant unit tests to update but am happy to do so if somebody points me in the right direction.