创建sessions表失败

来源:3-7 api之数据库层设计

时务者

2018-06-05

CREATE TABLE sessions (

session_id TINYTEXT PRIMARY KEY NOT NULL,

TTL TINYTEXT,

login_name VARCHAR(64)

);

错误: BLOB/TEXT column 'session_id' used in key specification without a key length

写回答

3回答

艾文西

2018-06-05

同学你好,这个表属于历史遗留问题。session_id 是使用tinytext类型的,但是mysql里面没有长度的primary key是不允许建表时候创建的,所以这个问题用如下方法解决:

CREATE TABLE sessions (
session_id tinytext not null,
TTL tinytext,
login_name varchar(64)
);
ALTER TABLE sessions ADD PRIMARY KEY (session_id(64));

实际上由于session id是一个uuid,那么使用varchar(64)直接创建也是可以的

祝您学习愉快

1
3
痞子过
如果这样设计,到时候查询是不是一个问题?
2018-07-10
共3条回复

痞子过

2018-07-10

//表设计语句

create database video default charset utf8;

use video;



create table users(author_id bigint not null primary key auto_increment,

login_name varchar(64) ,pwd text) engine=innodb;



create table video_info(video_id varchar(64) not null primary key,author_id bigint,name text,

display_ctime text,create_time datetime) engine=innodb;




create table session(session_id tinytext  not null ,

ttl tinytext,login_name varchar(64)) engine=innodb;




create table  comments(command_id varchar(64) not null primary key,video_id varchar(64),


author_id  bigint,content text,time datetime

) engine=innodb;


0
0

sliverg

2018-06-05

TINYTEXT ,作为主键, 这个类型要添加长度的 ,不然系统没法办证唯一性,但是  TINYTEXT  这个没有长度,所以建议加一个自增主键

0
1
时务者
嗯,解决了,谢谢你
2018-06-05
共1条回复

Go语言实战流媒体视频网站,高效学习Go高性能开发

从零开始,全面掌握Go语言编码的架构风格和开发Web的关键技能

996 学习 · 268 问题

查看课程