diff --git a/src/ORM/DatabaseAdmin.php b/src/ORM/DatabaseAdmin.php
index 475ae7f55..c70f9a643 100644
--- a/src/ORM/DatabaseAdmin.php
+++ b/src/ORM/DatabaseAdmin.php
@@ -9,6 +9,7 @@ use SilverStripe\Core\Manifest\ClassLoader;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\Dev\TestOnly;
use SilverStripe\Dev\Deprecation;
+use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\Security\Security;
use SilverStripe\Security\Permission;
@@ -325,10 +326,19 @@ class DatabaseAdmin extends Controller
echo "
Correcting $badRecordCount obsolete classname values for $newClassName\n";
}
$table = $schema->baseDataTable($baseDataClass);
- DB::prepared_query(
- "UPDATE \"$table\" SET \"ClassName\" = ? WHERE \"ClassName\" = ?",
- [ $newClassName, $oldClassName ]
- );
+
+ $updateQuery = "UPDATE \"$table%s\" SET \"ClassName\" = ? WHERE \"ClassName\" = ?";
+ $updateQueries = [sprintf($updateQuery, '')];
+
+ // Remap versioned table ClassName values as well
+ if (singleton($newClassName)->has_extension(Versioned::class)) {
+ $updateQueries[] = sprintf($updateQuery, '_Live');
+ $updateQueries[] = sprintf($updateQuery, '_Versions');
+ }
+
+ foreach ($updateQueries as $query) {
+ DB::prepared_query($query, [$newClassName, $oldClassName]);
+ }
}
}
}