From eca176f362fb76486c76af69b48c557ad137a428 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Wed, 19 Mar 2025 07:05:31 +0100 Subject: [PATCH] MS SQL: Fix collation issues when retrieving default values I was getting this error: Error in query (4189): Cannot convert to text/ntext or collate to 'Czech_100_CI_AI_SC_UTF8' because these legacy LOB types do not support UTF-8 or UTF-16 encodings. Use types varchar(max), nvarchar(max) or a collation which does not have the _SC or _UTF8 flags. This reverts part of a2adb67. --- CHANGELOG.md | 1 + adminer/drivers/mssql.inc.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b386eca3..707d1379 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ - PostgreSQL: Display auto_increment of inserted rows - PostgreSQL: Display description of system variables - PostgreSQL: Avoid warning about crdb_version (bug #924, regression from 5.0.5) +- MS SQL: Fix collation issues when retrieving default values - CSS: Sticky table headers (bug #918) - CSS: Allow more custom styles with dark mode (bug #925) - IMAP: New plugin driver created for fun diff --git a/adminer/drivers/mssql.inc.php b/adminer/drivers/mssql.inc.php index d21451ec..9e49a3a2 100644 --- a/adminer/drivers/mssql.inc.php +++ b/adminer/drivers/mssql.inc.php @@ -355,7 +355,7 @@ WHERE schema_id = SCHEMA_ID(" . q(get_schema()) . ") AND type IN ('S', 'U', 'V') $return = array(); $table_id = get_val("SELECT object_id FROM sys.all_objects WHERE schema_id = SCHEMA_ID(" . q(get_schema()) . ") AND type IN ('S', 'U', 'V') AND name = " . q($table)); foreach ( - get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, t.name type, CAST(d.definition as text) [default], d.name default_constraint, i.is_primary_key + get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, t.name type, d.definition [default], d.name default_constraint, i.is_primary_key FROM sys.all_columns c JOIN sys.types t ON c.user_type_id = t.user_type_id LEFT JOIN sys.default_constraints d ON c.default_object_id = d.object_id