I am using
PHP v7.1.7
MariaDB v10.2.7
doctrine/annotations v1.2.7 Docblock Annotations Parser
doctrine/cache v1.6.2 Caching library offering an object-oriented API for many cache backends
doctrine/collections v1.3.0 Collections Abstraction library
doctrine/common v2.6.2 Common Library for Doctrine projects
doctrine/data-fixtures v1.1.1 Data Fixtures for all Doctrine Object Managers
doctrine/dbal v2.5.13 Database Abstraction Layer
doctrine/doctrine-bundle 1.6.8 Symfony DoctrineBundle
doctrine/doctrine-cache-bundle 1.3.0 Symfony Bundle for Doctrine Cache
doctrine/doctrine-fixtures-bundle 2.3.0 Symfony DoctrineFixturesBundle
doctrine/doctrine-migrations-bundle v1.1.0 Symfony DoctrineMigrationsBundle
When I run command:
php bin/console doctrine:schema:update --force
I get every time same queries run and of course with
php bin/console doctrine:schema:update --dump-sql
I see every time the same SQL Queries (all of them ALTER).
So I have troubleshooted it a bit and found the following issue in:
vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Comparator.php:210
$table1Columns = $table1->getColumns();
$table2Columns = $table2->getColumns();
More precisely the problem is on :
vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Comparator.php:438
if ($properties1['default'] != $properties2['default'] ||
// Null values need to be checked additionally as they tell whether to create or drop a default value.
// null != 0, null != false, null != '' etc. This affects platform's table alteration SQL generation.
(null === $properties1['default'] && null !== $properties2['default']) ||
(null === $properties2['default'] && null !== $properties1['default'])
) {
$changedProperties[] = 'default';
}
The problem is that default null is different type. In table 1 is string "NULL" while in second table is a null type. Probably here need to cast or also check if property value is "NULL".

Is this a known issue? Any workarounds how to fix this one? It should be a new issue due to PHP version or MySQL/MariaDB because it's impossible to be unspotted so far.
Probably here need to cast or also check if property value is "NULL".
"NULL" is not NULL: one is a string, the other one is the absence of value.
Please check if this issue matches any of the following:
After updating to MariaDB 10.2 on a CentOS server I'm experiencing the same problem. I just dumped the database from the server and imported it into MySQL on Windows and there is nothing to update according to the doctrine:schema:update --dump-sql command. However on the server all fields are marked as needing update when they shouldn't
Hi @crash21 and @Ocramius I am facing the same issue after updating to MariaDB 10.2.7
Just found possible approaches to fix:
see my comment on https://github.com/doctrine/doctrine2/issues/6565
I'll publish a P/R soon
Seb
Here's a P/R: https://github.com/doctrine/dbal/pull/2825.
Feel free to test and comment.
This is duplicate of doctrine/doctrine2#6565 and should be fixed by #2825.
Most helpful comment
Hi @crash21 and @Ocramius I am facing the same issue after updating to MariaDB 10.2.7