Treat text/blob wider variants as compatible in schema sync

This commit is contained in:
DevSoftTech Server 2026-03-04 03:17:51 +05:30
parent 30076ae69e
commit 04ac40a73d

View File

@ -1197,23 +1197,43 @@ class Setup extends BaseController
return false; return false;
} }
if ($client['base'] !== $master['base']) { if ($client['base'] === $master['base']) {
if ($client['unsigned'] !== $master['unsigned']) {
return false;
}
if (in_array($client['base'], ['varchar', 'char', 'varbinary', 'binary'], true)) {
if ($client['length'] === null || $master['length'] === null) {
return false;
}
return $client['length'] >= $master['length'];
}
return false; return false;
} }
if ($client['unsigned'] !== $master['unsigned']) { $textOrder = [
return false; 'tinytext' => 1,
'text' => 2,
'mediumtext' => 3,
'longtext' => 4,
];
if (isset($textOrder[$client['base']], $textOrder[$master['base']])) {
return $textOrder[$client['base']] >= $textOrder[$master['base']];
} }
if (!in_array($client['base'], ['varchar', 'char', 'varbinary', 'binary'], true)) { $blobOrder = [
return false; 'tinyblob' => 1,
'blob' => 2,
'mediumblob' => 3,
'longblob' => 4,
];
if (isset($blobOrder[$client['base']], $blobOrder[$master['base']])) {
return $blobOrder[$client['base']] >= $blobOrder[$master['base']];
} }
if ($client['length'] === null || $master['length'] === null) { return false;
return false;
}
return $client['length'] >= $master['length'];
} }
/** /**