1. 官方文档说明官方文档的内容如下,主要意思是字段个数限制达不到理想的4096个,且和字段类型有关,innodb引擎的字段上限是1017, 。

文章插图
2. 测试表字段数限制2.1 测试innodb引擎表因官方文档介绍了innodb表字段限制是1017,因此可以写程序进行模拟 。思路如下:
a) 创建一张1个 char(1) 类型的innodb表
b) 循环往该表新增字段 直至报错
我使用的是Python 脚本进行测试,脚本如下:
#!/usr/bin/python
# coding=utf-8
import pyMySQL as mdb
import ossor_conn = mdb.connect(host='127.0.0.1',port=3306,user='root',passwd='123456')sor_cur = sor_conn.cursor()v_sql_d = "drop table if exists test.test_c ;" # 为了程序重复执行,添加判断sor_cur.execute(v_sql_d)
sor_conn.commit()
v_sql_c = "create table test.test_c(c1 char(1)) engine=innodb;"
sor_cur.execute(v_sql_c)
sor_conn.commit()
v_id=2
while v_id<50000:
v_sql_add_c = " alter table test.test_c add c%d char(1);"%(v_id) try:
sor_cur.execute(v_sql_add_c)
sor_conn.commit()
except mdb.Error,e:
v_cnt = v_id - 1
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
print "MySQL has a limit of %d" %(v_cnt)
break
v_id = v_id + 1
sor_conn.close()运行结果如下:
[root@testdb python_pro]# python test_column.py
Mysql Error 1117: Too many columns
MySQL has a limit of 1017在SQLyog客户端手动验证也是同样的结果
文章插图
【MySQL到底能有多少个字段?】
因此,官方文档中介绍的MySQL innodb引擎表最多有1017个字段 。
2.2 测试MYISAM引擎表因为MySQL中另一种MYISAM引擎的表在MySQL5.7版本之前也是非常重要的存储引擎,只是后续版本使用越来越少,但是 还是有必要测试一番 。
程序思路与测试innodb是均一致,只是将表的引擎进行修改,如下:
#!/usr/bin/python
# coding=utf-8
import pymysql as mdb
import os
import datetime
import timesor_conn = mdb.connect(host='127.0.0.1',port=3306,user='root',passwd='123456')sor_cur = sor_conn.cursor()v_sql_d = "drop table if exists test.test_c ;"sor_cur.execute(v_sql_d)
sor_conn.commit()
v_sql_c = "create table test.test_c(c1 char(1))engine=MYISAM ;"
sor_cur.execute(v_sql_c)
sor_conn.commit()
v_id=2
while v_id<50000:
v_sql_add_c = " alter table test.test_c add c%d char(1);"%(v_id) try:
sor_cur.execute(v_sql_add_c)
sor_conn.commit()
except mdb.Error,e:
v_cnt = v_id - 1
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
print "MySQL has a limit of %d" %(v_cnt)
break
v_id = v_id + 1
sor_conn.close()运行结果如下:
[root@testdb python_pro]# python test_column.py
Mysql Error 1117: Too many columns
MySQL has a limit of 2598也就是说MySQL中MyISAM引擎表最多可以存2598个字段 。3. 测试字段长度限制大家都知道的一个知识是在MySQL中一行除了blob及text类的大字段之外,其余字段的长度之和不能超过65535,那么这个是确定的么,因此再次做一次测试 。
推荐阅读
- MySQL数据库备份之主从同步配置
- 虚拟主机能用mysql么
- 玫瑰花茶搭配,玫瑰花茶到底是什么茶
- 女生长期戴眼镜与不戴眼镜,到底有什么区别?
- 茉莉茶能造假是不是,茉莉花茶到底是不是花茶
- 苦荞茶和柠檬玫瑰花茶,玫瑰花茶到底是什么茶
- 中国茶叶品种千千万,到底哪种茶最好喝呢_听听老茶客怎么说
- python3快速爬取房源信息,并存入mysql数据库,超详细
- 一文搞懂MySQL兄弟数据库MariaDB的安装和使用
- MySQL 全文索引实现一个简单版搜索引擎
