更改表以修改未终止的列类型

Posted

技术标签:

【中文标题】更改表以修改未终止的列类型【英文标题】:Alter table to modify column type not terminating 【发布时间】:2017-02-04 00:17:15 【问题描述】:

我是 SQL 新手,并且在数据库中有一个测试表。我意识到我之前的标题大小分配太小了,所以我想通过运行以下命令将它从 VARCHAR(120) 增加到 VARCHAR(500):

ALTER TABLE test MODIFY title VARCHAR(500);

但该语句永远不会终止,即使该表包含少于 20 个条目。

我错过了什么吗?

编辑:我是基于 these answers 的命令,但我也尝试过:

ALTER TABLE test MODIFY COLUMN title VARCHAR(500);

也不会终止。

【问题讨论】:

【参考方案1】:

由于您没有遇到语法错误并且您只有少量行,因此最可能的原因是有另一个进程在此表上持有锁。请连接您打开的任何其他客户端。这可能是 mysql 工作台的其他实例、长时间运行的脚本、django 控制台等等。

然后再次尝试查询。如果还是不行,试试SHOW OPEN TABLES

https://dev.mysql.com/doc/refman/5.7/en/show-open-tables.html

【讨论】:

就是这样,我之前得到的错误的mysql实例:(1406, "Data too long for column 'title' at row 1")首先提示我增加varchar仍然在另一个屏幕上运行。【参考方案2】:

ALTER TABLE 测试 ALTER COLUMN 标题 VARCHAR(500);

【讨论】:

对不起...刚刚注意到这是 MySQL。这是针对 SQL Server 的【参考方案3】:

试试这个。

ALTER TABLE test MODIFY COLUMN title VARCHAR(500);

我认为您缺少 关键字 COLUMN

【讨论】:

COLUMN 的用户是可选的。 感谢您的快速回复,我也尝试了该命令,结果相同。

以上是关于更改表以修改未终止的列类型的主要内容,如果未能解决你的问题,请参考以下文章

ORA-01439:要更改数据类型,则要修改的列必须为空

使用sql更改表的列的数据类型和添加新列和约束

更改列名的几种方法在数据库中

SQL如何更改表中的列名称?

修改表中的列

数据库表的列类型转换