根据文档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 )