当列是外键时,mysql/mariadb 是否对多列索引键大小有限制?

问题描述

对不起,我不确定问题来源和术语,所以情况。我正在尝试执行

CREATE TABLE `A` (
    `id` int(11) NOT NULL AUTO_INCREMENT,PRIMARY KEY (`id`)
);

然后

CREATE TABLE `B` (
   `id` int(11) NOT NULL AUTO_INCREMENT,`a_id` int(11) NOT NULL,`n` varchar(256) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `b` (`a_id`,`n`),FOREIGN KEY (`a_id`) REFERENCES `A` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
);

它运行正常,但当我尝试时

CREATE TABLE `B` (
   `id` int(11) NOT NULL AUTO_INCREMENT,`n` TEXT NOT NULL,FOREIGN KEY (`a_id`) REFERENCES `A` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
);

失败,说

ERROR 1005 (HY000): Can't create table `dbnAME`.`B` (errno: 150 "Foreign key constraint is incorrectly formed")

n VARCHAR(1024) NOT NULL 相同,但 VARCHAR(767) 和更少的工作正常。这不是索引限制,因为没有外键

CREATE TABLE `B` (
   `id` int(11) NOT NULL AUTO_INCREMENT,`n`)
);

它工作正常。所以有什么问题?我正在使用 MariaDB 10.4.17。我可以确定 VARCHAR(767) 和 less 可以在其他机器/版本/MysqL 上正常工作吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...