Skip to content

fix(mariadb): use CHANGE instead of RENAME COLUMN for column renaming#5507

Open
buyuan-dev wants to merge 1 commit intodrizzle-team:mainfrom
buyuan-dev:fix/mariadb-rename-column-final
Open

fix(mariadb): use CHANGE instead of RENAME COLUMN for column renaming#5507
buyuan-dev wants to merge 1 commit intodrizzle-team:mainfrom
buyuan-dev:fix/mariadb-rename-column-final

Conversation

@buyuan-dev
Copy link

Summary

Fixes a bug where column renaming in MariaDB generated invalid SQL syntax.

Problem

MariaDB doesn't support the standard SQL \ALTER TABLE ... RENAME COLUMN\ syntax. When drizzle-kit generated this syntax for MariaDB, migrations would fail with a syntax error:

\
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COLUMN \Name\ TO \Description' at line 1
\\

Fix

Changed the MySQL dialect to use \ALTER TABLE ... CHANGE old_name new_name data_type\ syntax instead of \RENAME COLUMN. The CHANGE syntax is compatible with both MySQL and MariaDB.

Before:
\\sql
ALTER TABLE \Status\ RENAME COLUMN \Name\ TO \Description;
\\

After:
\\sql
ALTER TABLE \Status\ CHANGE \Name\ \Description\ varchar(30) NOT NULL;
\\

Testing

  • Verified CHANGE syntax works in MariaDB 10.4
  • All existing MySQL tests should pass
  • The fix is backward compatible with MySQL

Fixes #5404

Fixes drizzle-team#5404

MariaDB doesn't support the standard SQL 'ALTER TABLE ... RENAME COLUMN'
syntax. Instead, it requires 'ALTER TABLE ... CHANGE old_name new_name data_type'
syntax.

The fix detects MariaDB dialect and generates the appropriate CHANGE syntax
for column renaming operations, which is compatible with both MySQL and MariaDB.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG]: Renaming column fails in mariadb

1 participant