The video is good. But it doesn't help as much, though. I know the source of the issue, but I can't seem to replicate it as the PHP code is preventing it from happening.
In short, in order for this to happen you need to have a MySQL/MariaDB database that has STRICT_ALL_TABLES or STRICT_TRANS_TABLES set in the sql_mode user variable. You can assign that using this statement:
SET sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,STRICT_ALL_TABLES';
However, this is not enough. There has to be run a query that is forcing a casting issue. The query is:
INSERT INTO qa_options (title, content) VALUES ("cache_qcount", 1) ON DUPLICATE KEY UPDATE content = VALUES(content) + CAST(content AS UNSIGNED);
The failing part is the CAST(content AS UNSIGNED) when the content present is an empty string (you can see that in the error log you posted). In order to prevent this from happening, I just added a single PHP line that should prevent this from happening by forcing a default of 0.
However, I can't think of any way in which an empty string would be inserted into the field. Unless you have updated the table manually after installation, could you record a video of the installation process and hit the qa_options table after every step of the installation process and also until you face the error with the following query?
SELECT title, content from qa_options where title = 'cache_qcount';
We are looking for the exact action that triggers the insertion of the empty string in the content column. Note even browsing a question list would insert a 0 in the field.