我尝试创建一个用于存储图片,视频或音频的表格,但收到此错误消息:
"错误:BLOB / TEXT栏'多媒体'用于密钥规范而没有密钥长度"
Create Table Multimedia
(
uname varchar(25),
datetime timestamp,
multimedia blob,
primary key (uname,datetime,multimedia),
foreign key (uname) references Entry(uname),
foreign key (datetime) references Entry(datetime)
);
有谁知道修复它?
答案 0 :(得分:0)
根据Prefixing INDEXes
上的文档:
索引
BLOB
或TEXT
列时,必须指定前缀长度 对于索引。例如:
CREATE TABLE test ( blob_col BLOB, INDEX( blob_col( 10 ) ) );
前缀最长可达
1000
个字节(767
个字节InnoDB
个字节, 除非你设置了innodb_large_prefix
。
更改您的表格primary key
定义如下:
Create Table Multimedia
(
uname varchar(25),
datetime timestamp,
multimedia blob,
primary key ( uname, datetime, multimedia( 767 ) ), -- <--- changed
foreign key ( uname ) references Entry( uname ),
foreign key ( datetime ) references Entry( datetime )
);
您还可以考虑进行设计更改,以将multimedia
对象存储在另一个表中,其中包含unique
键并具有auto increment
主键号。您可以在此表中使用相同的multimedia_id
来形成主键,如:
primary key ( uname, datetime, multimedia_id ),
foreign key ( uname ) references Entry( uname ),
foreign key ( datetime ) references Entry( datetime ),
foreign key ( multimedia_id ) references multimedia_objects( id )