0

我正在尝试创建一个表来存储图像、视频或音频,但收到以下错误消息:

“错误:在没有密钥长度的密钥规范中使用了 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)
);

有谁知道修复它?

4

1 回答 1

0

根据文档Prefixing INDEXes

当你索引一个BLOBTEXT列时,你必须为索引指定一个前缀长度。

例如:

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 )
于 2014-04-10T06:01:26.073 回答