更改/重命名列(如果存在)mariadb

问题描述 投票:0回答:2

如果我的专栏存在,我无法重新管理它,这就是我尝试过的(我添加了在同一个 ALTER my_table 中测试的不同行来总结):

ALTER TABLE my_table
  RENAME IF EXISTS column_name TO column_name_new;
  RENAME IF EXISTS column_name column_name_new;
  RENAME COLUMN column_name TO column_name_new;
  RENAME COLUMN column_name column_name_new;

一切都给我返回了这个错误: ALTER TABLE my_table RENAME COLUMN column_name TO column_name_new 错误代码:1064。您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在第 2 行 0.000 秒的“COLUMN column_name TO column_name_new”附近使用的正确语法

sql mariadb alter-table mariadb-10.3
2个回答
0
投票

https://mariadb.com/kb/en/alter-table/以此为参考,我发现RENAME (COLUMN) IF EXISTS并不存在。

这是文档中提供的解决方案:

 CHANGE [COLUMN] [IF EXISTS] old_col_name new_col_name column_definition [FIRST|AFTER col_name]

有效的例子:

ALTER TABLE my_table
  CHANGE COLUMN IF EXISTS column_name column_name_new TYPE DEFAULT VALUE;

此代码可以重新执行,不会出现错误,使用 mariaDB 10.3 进行测试。


0
投票

ALTER TABLE table_name CHANGE old_col_name new_col_name varchar(10);

您必须包含新列的类型,即使它没有更改。

要重命名表本身,但不重命名列,请使用 将表旧名称重命名为新名称;

在 mariadb v.15.1 中测试

© www.soinside.com 2019 - 2024. All rights reserved.