Skip to content

Commit 664ff34

Browse files
fix: Add column name aliases for MySQL information_schema queries
MySQL's information_schema columns are uppercase (COLUMN_NAME), but PostgreSQL's are lowercase (column_name). Added explicit aliases to get_primary_key_sql() and get_foreign_keys_sql() to ensure consistent lowercase column names across both backends. This fixes KeyError: 'column_name' in CI tests.
1 parent 5b7f6d7 commit 664ff34

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

src/datajoint/adapters/mysql.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -577,7 +577,7 @@ def get_columns_sql(self, schema_name: str, table_name: str) -> str:
577577
def get_primary_key_sql(self, schema_name: str, table_name: str) -> str:
578578
"""Query to get primary key columns."""
579579
return (
580-
f"SELECT column_name FROM information_schema.key_column_usage "
580+
f"SELECT COLUMN_NAME as column_name FROM information_schema.key_column_usage "
581581
f"WHERE table_schema = {self.quote_string(schema_name)} "
582582
f"AND table_name = {self.quote_string(table_name)} "
583583
f"AND constraint_name = 'PRIMARY' "
@@ -587,7 +587,8 @@ def get_primary_key_sql(self, schema_name: str, table_name: str) -> str:
587587
def get_foreign_keys_sql(self, schema_name: str, table_name: str) -> str:
588588
"""Query to get foreign key constraints."""
589589
return (
590-
f"SELECT constraint_name, column_name, referenced_table_name, referenced_column_name "
590+
f"SELECT CONSTRAINT_NAME as constraint_name, COLUMN_NAME as column_name, "
591+
f"REFERENCED_TABLE_NAME as referenced_table_name, REFERENCED_COLUMN_NAME as referenced_column_name "
591592
f"FROM information_schema.key_column_usage "
592593
f"WHERE table_schema = {self.quote_string(schema_name)} "
593594
f"AND table_name = {self.quote_string(table_name)} "

0 commit comments

Comments
 (0)