gpt4 book ai didi

mysql - 如何在名为分区的列上使用 MySQL 中的 ALTER TABLE

转载 作者:行者123 更新时间:2023-11-28 23:28:54 25 4
gpt4 key购买 nike

我有一个 MySQL 表,其中有一列名为分区。因为它是保留关键字,所以我应该能够使用 backticks 在查询中使用它。它适用于 SELECT,但不适用于 ALTER TABLE

如果我尝试:

ALTER TABLE `table` DROP `partition`;

ALTER TABLE `table` CHANGE `partition` `othername` INT;

MySQL 报同样的错误:

Error code 1054: Unknown column 'partition' in 'partition function'

我在“终端”中尝试过,通过 MySQL Workbench 或通过 Java JDBC,我总是遇到同样的错误。

关于删除该列的任何建议(不丢失/重新创建整个表...)?

编辑:你可以用像这样的小 table 来测试它:

CREATE TABLE `testpart` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `partition` smallint(6) NOT NULL, UNIQUE KEY `id` (`id`,`partition`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH(partition) PARTITIONS 16;

然后试试

ALTER TABLE `testpart` DROP COLUMN `partition`;

最佳答案

第一次尝试几乎是正确的,但你必须说出要删除什么 COLUMN。试试这个删除它们。反引号也有效。

ALTER TABLE `table` DROP COLUMN `partition`;

这是来自 Mariadb 的手册页:https://mariadb.com/kb/en/mariadb/alter-table/

示例

我必须在我的回答中添加一些信息:

  • 表有PARTITION

  • 因此您要更改/删除的 COLUMN 是 KEY

  • 您必须先删除分区,然后才能更改它们

  • COLUMN 的名称是 KEYWORD,因此您必须始终用反引号将其引用

创建一个有 16 个分区的表

MariaDB [yourschema]> CREATE TABLE testpart (
-> id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
-> `PARTITION` SMALLINT(6) NOT NULL,
-> UNIQUE KEY id (id,`PARTITION`)
-> ) ENGINE=MyISAM DEFAULT CHARSET=latin1
-> PARTITION BY HASH (`PARTITION`)
-> PARTITIONS 16 ;
Query OK, 0 rows affected (0.12 sec)

现在删除分区

MariaDB [yourschema]> ALTER TABLE `testpart` REMOVE PARTITIONING;
Query OK, 0 rows affected (0.35 sec)
Records: 0 Duplicates: 0 Warnings: 0

删除(或更改)COLUMN

MariaDB [yourschema]> ALTER TABLE `testpart` DROP COLUMN `PARTITION`;
Query OK, 0 rows affected (0.21 sec)
Records: 0 Duplicates: 0 Warnings: 0

MariaDB [yourschema]>

关于mysql - 如何在名为分区的列上使用 MySQL 中的 ALTER TABLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38079617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com