"Upgrade Wizard" - "Database Analyzer" - Loop
Currently, the Upgrade Wizard is not compatible with the Database Analyzer. The reason for this is the \TYPO3\CMS\Install\Updates\ExtensionManagerTables Task. It checks all tables with the SchemaMigrator and requires a generated database schema out of the TCA model.
$defaultTcaSchema = GeneralUtility::makeInstance(DefaultTcaSchema::class); $tables = $defaultTcaSchema->enrich($tables);
Many extension authors do not use unsigned in their sql files for int fields. This leads to a very large number of fields being changed by ExtensionManagerTables, although it should only change 2 tables.
Using unsigned int field seems to be the new standard.
If you execute the Database Analyzer after this task, these fields are displayed incorrectly and it is suggested to restore them to their original non-unsigned state. This is because the Database Analyzer uses the sql files of the extensions as a basis before comparing them with the SchemaMigrator. An "enrich" is then no longer necessary.
- Dissuade the ExtensionManagerTables Task from checking other tables. Because it should not be responsible for other modifications.
Then the system can regain 100% integrity.
#1 Updated by Christian Eßl 8 months ago
I noticed the same problem here in TYPO3 9.5.11.
ExtensionManagerTables::updateNecessary() reads in all update statements (event those that are not related to the extension manager). If at least one update statement is present, updateNecessary() will always return TRUE.
In ExtensionManagerTables::getUpdateStatements(), first $emTableStatements will only contain the statements for the extension manager tables. Then these statements are given to the SchemaMigrationService:
$updateSuggestions = $schemaMigrationService->getUpdateSuggestions($emTableStatements);
But appararently the SchemaMigrationService always returns the update suggestions for all tables, not only for those statements that were given as a parameter... So this looks like a bug in the SchemaMigrationService to me.