0 0

关于Mysql建表的长度限制0

create table Article (
articleID varchar(255) not null,
articleCotent varchar(255),
articleCreateDate datetime,
articleDescription varchar(255),
articlePV integer,
articlePicUrl varchar(255),
articleTitle varchar(60),
articleType varchar(50),
articleUrl varchar(255),
isShowCover bit,
primary key (articleID)
)
执行以上的建表语句,报错Specified key was too long; max key length is 767 bytes
难道必须要修改表的长度才可以吗?
我的MySql是6.0.11版的
2014年5月13日 17:08

4个答案 按时间排序 按投票排序

0 0

采纳的答案

MySQL是限制长度的, 因为你是设置的UTF-8编码,
articleID 长度是255*4 > 767 的

mysql官方好像有个说明, 如下
MySQL has a prefix limitation of 767 bytes in InnoDB, and 1000 bytes in MyISAM. This has never been a problem for me, until I started using UTF-16 as the character set for one of my databases. UTF-16 can use up to 4 bytes per character which means that in an InnoDB table, you can’t have any keys longer than 191 characters. Take this CREATE statement for example:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) NOT NULL,
  `password` varchar(64) NOT NULL,
  `email` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQ_8D93D649F85E0677` (`username`),
  UNIQUE KEY `UNIQ_8D93D649E7927C74` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf16 AUTO_INCREMENT=1 ;
This will fail with an error like Specified key was too long; max key length is 767 bytes, because the UNIQUE INDEX on the email field requires at least 1020 bytes (255 * 4).

2014年5月13日 17:20
0 0

给字段名都加上"'",就OK

2014年5月15日 06:40
0 0

多大的数据量,主键需要那么大? 换个小点点做主键好了, 搞个ID什么的。

2014年5月14日 18:22
0 0

一般主键建议用自增长的bigint,如果不想ID被人可读的话,可以选择32个字符的UUID,也是挺好的。

2014年5月13日 17:47

相关推荐

    Mysql建表语句转化为postgre语句

    - `VARCHAR`在MySQL中没有明确的最大长度限制,但在PostgreSQL中需要指定最大长度。 - `DATE`, `TIME`, `DATETIME`在MySQL中可以直接使用,而在PostgreSQL中可能需要转换为`DATE`, `TIME`, `TIMESTAMP`。 - MySQL...

    MySQL建表的规范总结.pdf

    以下是对“MySQL建表的规范总结.pdf”中提到的关键点的详细解释: **设计表规范** 1. **字段非空和默认值**:创建表时,为确保数据完整性,字段应尽可能设置为非空(NOT NULL),并设定默认值。这样可以避免插入...

    mysql建表语句.docx

    4. `gender VARCHAR(10) DEFAULT 'Unknown'`: `gender` 列同样是可变长度字符串类型,限制长度为10。这里还添加了一个默认值约束(DEFAULT),如果插入新记录时没有提供 `gender` 值,系统会自动将其设为 'Unknown'...

    MySQL建表的规范总结[归类].pdf

    以下是对MySQL建表和索引使用规范的详细说明: **一、设计表规范** 1. **非空约束与默认值**:在创建表时,为确保数据完整性,字段应尽可能设置为非空(NOT NULL)。若允许字段为空,应提供默认值,以防止插入空值...

    项目建表语句

    - `discription`:相册描述,长度限制为100个字符。 - `createtime`:创建时间,采用日期格式。 - `ablum_user_id`:用户ID,关联用户表。 - `ablum_photo_id`:相册中图片的ID,关联图片表。 - `pass_id`:相册密码...

    SQL建表范例

    以下是一些关于SQL建表的基本知识点,结合提供的"SQL建表范例"资源,我们将深入探讨如何有效地设计数据库表。 1. **基本概念**:SQL是一种用于管理和处理关系数据库的语言,而建表(CREATE TABLE)语句则是用来定义...

    Mysql 建库建表技巧分享

    避免为`varchar`字段设置过于严格的长度限制。例如,手机号码可能需要额外的0,邮编可能包含全角数字,姓名可能很长。应选择一个较为宽松的长度,如`varchar(50)`,并在应用程序中进行长度检查,以确保用户体验和...

    阿里巴巴MySQL开发规范

    如果长度超过此限制,应使用`text`类型,并将其存储在单独的表中。 5. **字段冗余**: - 字段允许适度冗余,以提高查询性能,但需确保数据一致性。 - 冗余字段应满足以下条件: - 不频繁修改的字段。 - 非`...

    利用PHP MySQL实现通用信息系统的建库建表功能.pdf

    例如,如果用户指定创建一个名为`users`的表,包含`id`(主键,整型)、`username`(字符串,最大长度20)和`email`(字符串,无长度限制)的字段,PHP会生成如下SQL: ```sql CREATE TABLE users ( id INT ...

    关于MySQL的基础篇章

    - 字符串类型:`char`(固定长度,溢出报错)和`varchar`(可变长度,节省空间)。 - 日期类型:`date`用于存储日期,如生日。 7. **约束与索引** - 约束用于定义字段的限制,如`not null`(非空)、`unique`...

    MySQL命令大全

    如果要对用户所用的登录终端进行限制,可以更新User表中相应用户的Host字段,在进行了以上更改后应重新启动数据库服务,此时登录时可用如下类似命令: mysql -uroot -p; mysql -uroot -pnewpassword; mysql mydb ...

    MySQL大表性能优化方案 和 MySQL高性能表设计规范

    在数据库管理领域,MySQL是广泛使用的开源关系型数据库系统,尤其在处理大数据量时,其性能优化和高效表设计显得...在实践中,我们需要根据具体业务需求和资源限制,灵活应用这些策略和规范,以达到最优的数据库性能。

    达梦数据库使用,包括安装,配置,适配Mysql、备份与还原

    迁移到达梦数据库需要将 Mysql 的建表语句转换为达梦数据库的语句。需要注意以下几点: 1. 除主键索引外都建议使用单独语句进行索引新建。 2. 不能使用 USE BTREE。 3. int 相关字段类型不能标注长度。 4. json ...

    mysql代码-请假表 ask_leave

    5. `leave_type`:请假类型,如病假、年假等,可以使用`VARCHAR`存储,限制长度如20个字符。 6. `reason`:请假原因,可能较长,可使用`TEXT`或`LONGTEXT`类型。 7. `status`:请假状态,如待审批、已批准、已拒绝,...

    MySQL错误“Specified key was too long; max key length is 1000 bytes”的解决办法

    MySQL对每个表的每个索引都有一个最大长度限制,通常是1000字节。这个限制包括了所有被索引字段的长度。 在描述中提到的情况,用户在尝试为两个字段设置唯一索引时遇到了这个问题。这是因为MySQL在计算索引长度时,...

    MySQL-数据库-索引详解

    MySQL 数据库索引详解 MySQL 数据库索引是一种特殊的数据库结构,可以快速查询数据库表中特定记录。索引是提高数据库性能的重要方式。...注意添加索引的长度必须小于建表时给字段定义的长度,也可以不给长度。

    sql建库建表

    在这个例子中,`INT`表示整数类型,`VARCHAR(50)`表示最多50个字符的可变长度字符串,`PRIMARY KEY`是约束,用于标识每行的唯一性。 3. 数据类型: SQL支持多种数据类型,如: - 整数类型:`TINYINT`, `SMALLINT`, ...

    2021春招MySQL高频面试题.pdf

    - **CHAR**:固定长度字符串类型,适合存储定长字符串,如电话号码。 - **VARCHAR**:变长字符串类型,适合存储不定长字符串,如地址。 #### 15. SQL语言分类 SQL语言主要包括以下几个方面: - **数据定义语言**...

Global site tag (gtag.js) - Google Analytics