Bug #49186
closedInstall tool: DB port setting magic
100%
Description
Currently, the "DatabaseConnect" step is executed, if a "port" setting is missing in typo3_conf_vars db. This is technically ok, since after switch to mysqli in 6.1, the connect methods needs a port setting.
Currently, the bootstrap db connect method tries a split of the former host setting into host and port and then sets the port silently. This is a bit ugly, since this is performed on each and every request. Furthermore, the split can fail, if a ipv6 address is given with a port (eg. [:::1]:3306)
Thus, I suggest to let the bootstrap just redirect to install tool if port is missing, and then implement a solid "silent upgrade" within the database connect class of the step installer before "needsExecuction" is done. This way, if the silent upgrade is ok, the step won't come up. Furthermore, the bootstrap code can be cleaned up from this implicit upgrade.
There is another ticket in this area, regarding 'socket' connection to db. This could also be implemented in the DatabaseConnect then, maybe with a checkbox if host is localhost, no port is needed then.
Furthermore, it is important to note that the mysqli connect method ignores the port setting, if host is set to 'localhost' and not '127.0.0.1', so another "silent upgrade" could switch from string 'localhost' to '127.0.0.1' if the port setting is not the default mysql port 3306.