diff -u b/core/modules/taxonomy/src/Plugin/migrate/source/d6/TaxonomyVocabularyTranslation.php b/core/modules/taxonomy/src/Plugin/migrate/source/d6/TaxonomyVocabularyTranslation.php --- b/core/modules/taxonomy/src/Plugin/migrate/source/d6/TaxonomyVocabularyTranslation.php +++ b/core/modules/taxonomy/src/Plugin/migrate/source/d6/TaxonomyVocabularyTranslation.php @@ -38,9 +38,11 @@ ->fields('lt', ['lid', 'translation']) ->condition('i18n.type', 'vocabulary'); $query->addField('lt', 'language', 'language'); - // The vid is an integer and the objectid is a string. Use the like operator - // to force PostgreSQL to cast the vid to a string. - $query->join('i18n_strings', 'i18n', 'v.vid like i18n.objectid'); + // The i18n_strings table has two columns containing the object ID, objectid + // and objectindex. The objectid column is a text field. Therefore, for the + // join to work in PostgreSQL, use the objectindex field as this is numeric + // like the vid field. + $query->join('i18n_strings', 'i18n', 'v.vid = i18n.objectindex'); $query->leftJoin('locales_target', 'lt', 'lt.lid = i18n.lid'); return $query;