如何在 MySQL 中将 mediumtext 列更改为 varchar? (换表)
Posted
技术标签:
【中文标题】如何在 MySQL 中将 mediumtext 列更改为 varchar? (换表)【英文标题】:How to change mediumtext column to varchar in MySQL? (table altering) 【发布时间】:2021-11-13 03:50:18 【问题描述】:我想将表格的列格式从 mediumtext 转换为 varchar,因为我想将其定义为唯一值列。 如果我尝试这样做,我会从管理员和 phpmyadmin 那里得到一个积极的反馈,但它会显示注释/警告“Note 1246 Converting column 'URL' from VARCHAR to TEXT”并且没有任何反应。
列的当前值遵守 VARCHAR 的长度限制。是否有可能强制进行这种更改?
【问题讨论】:
正如注释所说的“从 VARCHAR 到 TEXT”,似乎 adminer/phpmyadmin 试图以错误的方式更改列类型。您能否提供更多关于您如何与 adminer/phpmyadmin 交互的信息? 如果要使用VARCHAR,则需要指定最大长度。 @user14967413 我通过 UI 以及以下方法进行了尝试:ALTER TABLE tablename MODIFY COLUMN URL varchar(65535); 运行SELECT MAX(LENGTH(url)) FROM tbl;
你会得到什么?
@RickJames 158
【参考方案1】:
整个索引的限制是 3072 字节。你确定它们会比这更短吗?如果没有,有一些笨拙的方法可以通过包含md5
(或其他一些摘要)的额外列来实现。
错误消息可能与VARCHAR
相关,而不是UNIQUE
。请注意,CHARACTER SET
会影响限制。
SELECT MAX(LENGTH(url)) FROM tbl;
给你的只有158。建议你把栏改成VARCHAR(191)
。
【讨论】:
以上是关于如何在 MySQL 中将 mediumtext 列更改为 varchar? (换表)的主要内容,如果未能解决你的问题,请参考以下文章
TINYINT,SMALLINT,MEDIUMINT,INT,INTEGER,BIGINT;text,longtext,mediumtext,ENUM,SET等字段类型区别