查看mysql表结构和表创建语句的方法,建表42000错误解决办法
Posted 关灯吃面
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查看mysql表结构和表创建语句的方法,建表42000错误解决办法相关的知识,希望对你有一定的参考价值。
MYSQL ERROR 1071 (42000): Specified key was too long; max key length is 767 byte
drop table if exists test; create table test(test varchar(767) primary key)charset=latin5; -- 成功 drop table if exists test; create table test(test varchar(768) primary key)charset=latin5; -- 错误 -- ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes drop table if exists test; create table test(test varchar(383) primary key)charset=GBK; -- 成功 drop table if exists test; create table test(test varchar(384) primary key)charset=GBK; -- 错误 -- ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes drop table if exists test; create table test(test varchar(255) primary key)charset=UTF8; -- 成功 drop table if exists test; create table test(test varchar(256) primary key)charset=UTF8; -- 错误 -- ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
mysql的varchar主键只支持不超过768个字节 或者 768/2=384个双字节 或者 768/3=256个三字节的字段 ,而 GBK是双字节的,UTF-8是三字节的。
MySQL ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes 的原因分析
查看mysql表结构的方法有三种:
1、mysql> desc tablename; # 查看表的结构
+------------------+---------------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+---------------------+------+-----+---------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | text | NO | | NULL | | | content | text | NO | | NULL | | | ordering | int(11) | NO | | 0 | | | position | varchar(50) | YES | | NULL | | | checked_out | int(11) unsigned | NO | | 0 | | | checked_out_time | datetime | NO | | 0000-00-00 00:00:00 | | | published | tinyint(1) | NO | MUL | 0 | | | module | varchar(50) | YES | MUL | NULL | | | numnews | int(11) | NO | | 0 | | | access | tinyint(3) unsigned | NO | | 0 | | | showtitle | tinyint(3) unsigned | NO | | 1 | | | params | text | NO | | NULL | | | iscore | tinyint(4) | NO | | 0 | | | client_id | tinyint(4) | NO | | 0 | | | control | text | NO | | NULL | | +------------------+---------------------+------+-----+---------------------+----------------+
2、mysql> show create table tablename; # 查看创建表的sql语句
- mysql> show create table jos_modules;
- jos_modules | CREATE TABLE `jos_modules` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `title` text NOT NULL,
- `content` text NOT NULL,
- `ordering` int(11) NOT NULL DEFAULT ‘0‘,
- `position` varchar(50) DEFAULT NULL,
- `checked_out` int(11) unsigned NOT NULL DEFAULT ‘0‘,
- `checked_out_time` datetime NOT NULL DEFAULT ‘0000-00-00 00:00:00‘,
- `published` tinyint(1) NOT NULL DEFAULT ‘0‘,
- `module` varchar(50) DEFAULT NULL,
- `numnews` int(11) NOT NULL DEFAULT ‘0‘,
- `access` tinyint(3) unsigned NOT NULL DEFAULT ‘0‘,
- `showtitle` tinyint(3) unsigned NOT NULL DEFAULT ‘1‘,
- `params` text NOT NULL,
- `iscore` tinyint(4) NOT NULL DEFAULT ‘0‘,
- `client_id` tinyint(4) NOT NULL DEFAULT ‘0‘,
- `control` text NOT NULL,
- PRIMARY KEY (`id`),
- KEY `published` (`published`,`access`),
- KEY `newsfeeds` (`module`,`published`)
- ) ENGINE=MyISAM AUTO_INCREMENT=145 DEFAULT CHARSET=utf8
3、mysql>select COLUMN_NAME from information_schema.COLUMNS where table_name = ‘tablename‘ and TABLE_SCHEMA =‘databasename‘;
# 查看列名
- +----------------------------+
- | COLUMN_NAME
- +----------------------------+
- | id
- | distinct_name
- | offical_domain
- | offical_ip
- | offical_ip_loc
- | similar_domain_regex
- | title_keywords
- | content_sensitive_keywords
- | out_link_offical_rate
- | icp_code
- | reserved_one
- | reserved_two
- | reserved_three
- | update_time
- +----------------------------+
以上是关于查看mysql表结构和表创建语句的方法,建表42000错误解决办法的主要内容,如果未能解决你的问题,请参考以下文章
怎样导出sybase数据库的所有库结构和表结构的建库的sql语句