Bug #82023

Install Tool DB Analyzer tries to change all VARCHAR fields

Added by Viktor Livakivskyi over 1 year ago. Updated about 1 month ago.

Status:
Rejected
Priority:
Should have
Assignee:
-
Category:
Database API (Doctrine DBAL)
Target version:
-
Start date:
2017-08-01
Due date:
% Done:

0%

TYPO3 Version:
8
PHP Version:
7.1
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

Hi developers,

I'm experiencing an issue with DB Migrations in Install Tool - the analyzer complains every time about all varchar fields. E.g.:

 ALTER TABLE `be_groups` CHANGE `title` `title` VARCHAR(50) DEFAULT '' NOT NULL 
Current value: title VARCHAR(50) DEFAULT '''' NOT NULL COLLATE utf8_unicode_ci
 ALTER TABLE `be_groups` CHANGE `allowed_languages` `allowed_languages` VARCHAR(255) DEFAULT '' NOT NULL 
Current value: allowed_languages VARCHAR(255) DEFAULT '''' NOT NULL COLLATE utf8_unicode_ci
 ALTER TABLE `be_groups` CHANGE `pagetypes_select` `pagetypes_select` VARCHAR(255) DEFAULT '' NOT NULL 
Current value: pagetypes_select VARCHAR(255) DEFAULT '''' NOT NULL COLLATE utf8_unicode_ci
...

What I've also noticed: the reported DEFAULT value in DB consists of 4 quotes: '''', while proposed one contains two: ''
Altering table doesn't change anything, and I'm quite unsure how to fix this.

TYPO3 8.7.4
PHP 7.1
MariaDB 10.2.7


Related issues

Duplicated by TYPO3 Core - Bug #83046: sys_file_collection and tt_content could not be created Closed 2017-11-20

History

#1 Updated by Hans Höchtl over 1 year ago

Same here, I posted it on Stackoverflow: [[https://stackoverflow.com/questions/45737730/typo3-lists-all-tables-in-db-compare-because-of-collate]].

I think it could be the collation, not the quotes.

#2 Updated by Aleksandar Dimitrov about 1 year ago

I was able to reproduce this with 8.7.4 and 8.7.3, and mariadb 10.2.x and 5.x, on clean installs via the Install tool.
My guess is that a strict string comparison of '' with '''' causes the problem.
I think the serialisation of the 'original' column definition is buggy. Note the following case:

ALTER TABLE `tt_content` CHANGE `table_caption` `table_caption` VARCHAR(255) DEFAULT NULL
Current value: table_caption VARCHAR(255) DEFAULT 'NULL' COLLATE utf8_unicode_ci 

'NULL' is in quotes here, and most definitely should not be, as NULL and 'NULL' are very different things for any SQL server. Some aggressive string escaping maybe?

#3 Updated by Morton Jonuschat about 1 year ago

  • Status changed from New to On Hold

MariaDB implemented a change to the Information Schema COLUMNS table which changed the output format compared to the original (Oracle) MySQL: https://jira.mariadb.org/browse/MDEV-13132
There is ongoing work in the upstream Doctrine DBAL repository on how to fix this: https://github.com/doctrine/dbal/pull/2825

At this time TYPO3 is not compatible with MariaDB >= 10.2.7 and given that the fix is happening deeply in the upstream Doctrine DBAL stack there is little we can do to work around it at this point in time.

#4 Updated by Benni Mack about 1 year ago

  • Status changed from On Hold to Rejected

So, the only thing TYPO3 can do, is wait for the Doctrine DBAL fix, and once this is done we can upgrade our dependency.

#5 Updated by Georg Ringer 12 months ago

  • Duplicated by Bug #83046: sys_file_collection and tt_content could not be created added

#6 Updated by Georg Ringer 12 months ago

the PR https://github.com/doctrine/dbal/pull/2825 has been merged yesterday, so lets see when a release is done

#7 Updated by Thomas Böhm 3 months ago

Has this problem been solved? I just installed a fresh typo3 8.7.19 on mariadb 10.2.17 and still have this problem. Or is it solved in mariadb 10.3? Downgrading to 10.1 is not an easy option for me as there are other databases already on that server.

#8 Updated by Jan Kiesewetter 3 months ago

TYPO3 8.7 has dbal 2.5.10 locked atm.
https://github.com/TYPO3/TYPO3.CMS/blob/TYPO3_8-7/composer.lock#L339-L345
and installs maximum v2.5.13.

MariaDB 10.2 support came with doctrine/dbal 2.7.0
https://github.com/doctrine/dbal/releases/tag/v2.7.0

So this is fixed for master and TYPO3 ^9.3 but not for 8.7.

#9 Updated by Georg Ringer about 1 month ago

Some final words: This won't be solved as doctrine dbal 2.7.0 requires php 7.1 which doesn't fit to the min. requirements of TYPO3 8.7 which got php 7.0.

#10 Updated by Jan Kiesewetter about 1 month ago

As PHP 7.0 is EOL by 3 Dec 2018 http://php.net/supported-versions.php, maybe TYPO3 8.7 could raise requirements after that?

Also available in: Atom PDF