MariaDB 10.4 поддерживает UNIQUE KEY для столбца TEXT, поскольку он автоматически преобразует индекс в индекс HA SH:
mysql> create table t (id serial primary key, t text, unique key(t));
Query OK, 0 rows affected (0.01 sec)
mysql> show create table t\G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE `t` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`t` text DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `t` (`t`) USING HASH
) ENGINE=InnoDB DEFAULT CHARSET=latin1
К сожалению, Amazon RDS для MariaDB пока не поддерживает MariaDB 10.4 (поскольку от 2020-03-19), в соответствии с https://aws.amazon.com/rds/mariadb/:
Amazon RDS поддерживает MariaDB Server версий 10.0, 10.1, 10.2 и 10.3, что означает, что код, приложения и инструменты, которые вы уже используете сегодня, можно использовать с Amazon RDS.
Функция индекса HA SH не поддерживается в MariaDB 10.3 или более ранних версиях:
mysql> create table t (id serial primary key, t text, unique key(t));
ERROR 1170 (42000): BLOB/TEXT column 't' used in key specification without a key length
Вы можете создать уникальный ключ для префикса текстового столбца:
mysql> create table t (id serial primary key, t text, unique key(t(1000)));
Query OK, 0 rows affected (0.01 sec)
mysql> show create table t\G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE `t` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`t` text DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `t` (`t`(1000))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Это означает, что уникальный ключ обеспечит уникальность первых 1000 символов. Вам не разрешено хранить две строки со строкой, которые имеют одинаковые первые 1000 символов, но отличаются 1001-м символом или более поздним.