【发布时间】:2020-03-19 21:44:01
【问题描述】:
我最近复制了一个现有的 MariaDB 表(用于 Amazon RDS)。这两个表基本相同,包括数据,但我注意到新版本缺少所有唯一约束(保持主键很好)。当我尝试添加唯一性时,出现错误:
BLOB/TEXT column 'url' used in key specification without a key length
其他人也遇到过这个问题,人们有claimed 表示 MySQL/MariaDB 根本不允许您使文本列独一无二。但是我原来的 MariaDB 数据库(在我的本地机器上)有很多带有唯一键的文本列,所以不可能。无论如何,我尝试了他们的解决方案(切换到 varchar),但 MariaDB 也不允许我这样做,因为我的数据有太多字符。有任何想法吗?非常感谢。
【问题讨论】:
-
两台服务器是否安装了相同版本的 MySQL?如果它们不同,则可能一个版本允许这样做,而另一个版本则不允许
-
一个在我的本地机器上运行(一个工作),一个在 Amazon RDS 上(一个不工作)
-
是的,本地的 MySQL 版本与在 AWS 上运行的 MySQL 版本是什么?在每个数据库上运行
SELECT VERSION();并比较返回的内容 -
啊,它们不同:本地:10.4.11-MariaDB。 Amazon RDS:10.2.21-MariaDB-log。嗯,那我该怎么办?我可以更新 Amazon 的版本,或者更改表以使用旧的 MariaDB,或者其他什么?
-
好吧,您可以将不起作用的版本更改为与起作用的版本相同,这可能会有所帮助。我不知道您从哪里获得将其更改为 VARCHAR 的说明,但查看此链接说,如果您没有正确设置密钥长度,VARCHAR 解决方案可能无法正常工作。 techjourney.net/…
标签: mariadb amazon-rds