diff --git a/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php b/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php index b1294339e6..0866762f27 100644 --- a/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php +++ b/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php @@ -3,6 +3,7 @@ namespace Drupal\migrate\Plugin\migrate\id_map; use Drupal\Core\Database\DatabaseException; +use Drupal\Core\Database\DatabaseExceptionWrapper; use Drupal\Core\Field\BaseFieldDefinition; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; use Drupal\Core\Plugin\PluginBase; @@ -591,7 +592,16 @@ public function lookupDestinationIds(array $source_id_values) { } } - return $query->execute()->fetchAll(\PDO::FETCH_NUM); + try { + return $query->execute()->fetchAll(\PDO::FETCH_NUM); + } + catch (DatabaseExceptionWrapper $e) { + // It's possible that the query will cause an exception to be thrown. For + // example, the URL alias migration uses a dummy node ID of 'INVALID_NID' + // to cause the lookup to return no results. On PostgreSQL this causes an + // exception because 'INVALID_NID' is not the expected type. + return []; + } } /** diff --git a/core/modules/migrate_drupal/tests/src/Traits/NodeMigrateTypeTestTrait.php b/core/modules/migrate_drupal/tests/src/Traits/NodeMigrateTypeTestTrait.php index a5eded5d31..21cba11551 100644 --- a/core/modules/migrate_drupal/tests/src/Traits/NodeMigrateTypeTestTrait.php +++ b/core/modules/migrate_drupal/tests/src/Traits/NodeMigrateTypeTestTrait.php @@ -67,7 +67,10 @@ protected function removeNodeMigrateMapTable($type, $version) { */ protected function getTableName($type, $version) { if (!$this->tableName) { - $content_type = $this->randomMachineName(); + // PostgreSQL table names are automatically converted lowercase. If this + // string is not lowercase then we can't remove the table in + // \Drupal\Tests\migrate_drupal\Traits\NodeMigrateTypeTestTrait::removeNodeMigrateMapTable(). + $content_type = strtolower($this->randomMachineName()); $this->tableName = 'migrate_map_d' . $version . '_node_complete__' . $content_type; if ($type == NodeMigrateType::NODE_MIGRATE_TYPE_CLASSIC) { $this->tableName = 'migrate_map_d' . $version . '_node__' . $content_type; diff --git a/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeCompleteTest.php b/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeCompleteTest.php index 1e769653c7..704d7eb230 100644 --- a/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeCompleteTest.php +++ b/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeCompleteTest.php @@ -62,10 +62,15 @@ public function testNodeCompleteMigration() { $db = \Drupal::database(); $this->assertEquals($this->expectedNodeFieldRevisionTable(), $db->select('node_field_revision', 'nr') ->fields('nr') + ->orderBy('vid') + ->orderBy('langcode') ->execute() ->fetchAll(\PDO::FETCH_ASSOC)); $this->assertEquals($this->expectedNodeFieldDataTable(), $db->select('node_field_data', 'nr') ->fields('nr') + ->orderBy('nid') + ->orderBy('vid') + ->orderBy('langcode') ->execute() ->fetchAll(\PDO::FETCH_ASSOC)); diff --git a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeCompleteTest.php b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeCompleteTest.php index 59021cabfa..6525de07af 100644 --- a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeCompleteTest.php +++ b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeCompleteTest.php @@ -107,10 +107,15 @@ public function testNodeCompleteMigration() { $db = \Drupal::database(); $this->assertEquals($this->expectedNodeFieldRevisionTable(), $db->select('node_field_revision', 'nr') ->fields('nr') + ->orderBy('vid') + ->orderBy('langcode') ->execute() ->fetchAll(\PDO::FETCH_ASSOC)); $this->assertEquals($this->expectedNodeFieldDataTable(), $db->select('node_field_data', 'nr') ->fields('nr') + ->orderBy('nid') + ->orderBy('vid') + ->orderBy('langcode') ->execute() ->fetchAll(\PDO::FETCH_ASSOC));