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).
相关推荐
- `VARCHAR`在MySQL中没有明确的最大长度限制,但在PostgreSQL中需要指定最大长度。 - `DATE`, `TIME`, `DATETIME`在MySQL中可以直接使用,而在PostgreSQL中可能需要转换为`DATE`, `TIME`, `TIMESTAMP`。 - MySQL...
以下是对“MySQL建表的规范总结.pdf”中提到的关键点的详细解释: **设计表规范** 1. **字段非空和默认值**:创建表时,为确保数据完整性,字段应尽可能设置为非空(NOT NULL),并设定默认值。这样可以避免插入...
4. `gender VARCHAR(10) DEFAULT 'Unknown'`: `gender` 列同样是可变长度字符串类型,限制长度为10。这里还添加了一个默认值约束(DEFAULT),如果插入新记录时没有提供 `gender` 值,系统会自动将其设为 'Unknown'...
以下是对MySQL建表和索引使用规范的详细说明: **一、设计表规范** 1. **非空约束与默认值**:在创建表时,为确保数据完整性,字段应尽可能设置为非空(NOT NULL)。若允许字段为空,应提供默认值,以防止插入空值...
- `discription`:相册描述,长度限制为100个字符。 - `createtime`:创建时间,采用日期格式。 - `ablum_user_id`:用户ID,关联用户表。 - `ablum_photo_id`:相册中图片的ID,关联图片表。 - `pass_id`:相册密码...
以下是一些关于SQL建表的基本知识点,结合提供的"SQL建表范例"资源,我们将深入探讨如何有效地设计数据库表。 1. **基本概念**:SQL是一种用于管理和处理关系数据库的语言,而建表(CREATE TABLE)语句则是用来定义...
避免为`varchar`字段设置过于严格的长度限制。例如,手机号码可能需要额外的0,邮编可能包含全角数字,姓名可能很长。应选择一个较为宽松的长度,如`varchar(50)`,并在应用程序中进行长度检查,以确保用户体验和...
如果长度超过此限制,应使用`text`类型,并将其存储在单独的表中。 5. **字段冗余**: - 字段允许适度冗余,以提高查询性能,但需确保数据一致性。 - 冗余字段应满足以下条件: - 不频繁修改的字段。 - 非`...
例如,如果用户指定创建一个名为`users`的表,包含`id`(主键,整型)、`username`(字符串,最大长度20)和`email`(字符串,无长度限制)的字段,PHP会生成如下SQL: ```sql CREATE TABLE users ( id INT ...
- 字符串类型:`char`(固定长度,溢出报错)和`varchar`(可变长度,节省空间)。 - 日期类型:`date`用于存储日期,如生日。 7. **约束与索引** - 约束用于定义字段的限制,如`not null`(非空)、`unique`...
如果要对用户所用的登录终端进行限制,可以更新User表中相应用户的Host字段,在进行了以上更改后应重新启动数据库服务,此时登录时可用如下类似命令: mysql -uroot -p; mysql -uroot -pnewpassword; mysql mydb ...
在数据库管理领域,MySQL是广泛使用的开源关系型数据库系统,尤其在处理大数据量时,其性能优化和高效表设计显得...在实践中,我们需要根据具体业务需求和资源限制,灵活应用这些策略和规范,以达到最优的数据库性能。
迁移到达梦数据库需要将 Mysql 的建表语句转换为达梦数据库的语句。需要注意以下几点: 1. 除主键索引外都建议使用单独语句进行索引新建。 2. 不能使用 USE BTREE。 3. int 相关字段类型不能标注长度。 4. json ...
5. `leave_type`:请假类型,如病假、年假等,可以使用`VARCHAR`存储,限制长度如20个字符。 6. `reason`:请假原因,可能较长,可使用`TEXT`或`LONGTEXT`类型。 7. `status`:请假状态,如待审批、已批准、已拒绝,...
MySQL对每个表的每个索引都有一个最大长度限制,通常是1000字节。这个限制包括了所有被索引字段的长度。 在描述中提到的情况,用户在尝试为两个字段设置唯一索引时遇到了这个问题。这是因为MySQL在计算索引长度时,...
MySQL 数据库索引详解 MySQL 数据库索引是一种特殊的数据库结构,可以快速查询数据库表中特定记录。索引是提高数据库性能的重要方式。...注意添加索引的长度必须小于建表时给字段定义的长度,也可以不给长度。
在这个例子中,`INT`表示整数类型,`VARCHAR(50)`表示最多50个字符的可变长度字符串,`PRIMARY KEY`是约束,用于标识每行的唯一性。 3. 数据类型: SQL支持多种数据类型,如: - 整数类型:`TINYINT`, `SMALLINT`, ...
- **CHAR**:固定长度字符串类型,适合存储定长字符串,如电话号码。 - **VARCHAR**:变长字符串类型,适合存储不定长字符串,如地址。 #### 15. SQL语言分类 SQL语言主要包括以下几个方面: - **数据定义语言**...