十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
可以设置的.
南川ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
MySQL有几种数据类型可以限制类型的"长度",有CHAR(Length)、VARCHAR(Length)、TINYINT(Length)、SMALLINT(Length)、MEDIUMINT(Length)、INT(Length)、BIGINT(Length)、FLOAT(Length, Decimals)、DOUBLE(Length, Decimals)和DECIMAL(Length, Decimals)。
然而,这些数据类型的长度,并不是都指数据的大小。具体说就是:
(1)CHAR、VARCAHR的长度是指字符的长度,例如CHAR[3]则只能放字符串"123",如果插入数据"1234",则从高位截取,变为"123"。 VARCAHR同理。
(2)TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT的长度,其实和数据的大小无关!Length指的是显示宽度,举个例子:
怎么查看mysql表字段的所有长度
方法/步骤
一般查询语句:SELECT `lcontent` FROM `caiji_ym_liuyan`
查询数据:
有些时候需要查询某个字段的长度为多少时候才显示数据:
SQL语句:SELECT `lcontent` FROM `caiji_ym_liuyan` where length(lcontent)=40
PS:在mysql中一个汉字等于3个字节,所以查询的时候需要转换一下
特别要注意的就时候对于字节的转换
mysql版本 5.1
表类型: innodb, row_format=compact (这是默认的行格式)
插入超过10个blob, blob的数据量很小(768字节), 插入成功。
插入超过10个blob, blob的数据量很大(768字节), 插入失败:报 Got error 139 from storage engine。
注意,如果mysql服务器版本是5.1, innodb_file_format选项不存在, 也就无从谈起Barracuda格式。 设置row_format=dynamic也是没意义的。
mysql版本 5.5
表类型: innodb, row_format=compact (这是默认的行格式)
插入超过10个blob, blob的数据量很大(768字节), 插入失败:报 Row size too large ( 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
表类型: innodb, row_format=dynamic (这是innodb的新文件存储格式Barracuda所支持的行格式)
插入超过10个blob, blob的数据量很大(768字节), 插入成功
备注:
1) 实际测试测试我用的每个字段长度都是100K+
2) 对于mysql5.5, 虽然支持Barracuda。但是默认使用的还是老的格式:Antelope
除非在mysql的配置里面my.cnf修改:
innodb_file_per_table = 1
innodb_file_format = Barracuda
或者set global 命令动态的修改:
SET GLOBAL innodb_file_format=barracuda;
SET GLOBAL innodb_file_per_table=1;
注意:
1) 修改后的innodb_file_format格式, 只影响后续创建的表。 也就是后续创建的表,可以支持把row_format设为dynamic
2) SET GLOBAL 只是在mysql服务器运行期间有效,重启后innodb_file_format还原为原来的格式。
3) 判断一个表是否支持超过10个blob的字段的简单办法:
show table status like 't1' \G
查看 Row_format , 如果是Compact, 必定不支持, 如果是dynamic, 则支持。
字段长度都是自己规定的,不超过系统限制就行了,新建表的时候表还没有,是看不到你建的字段的长度的。只有表建立好后,你才可以查看自己建的表中的字段长度。
不对。因为没有排序的情况下,limit 1,并不能保证取的是第一条记录。
步骤如下:
1、创建测试表;
create table test_aaa(id int, bbb int , ccc int);
2、插入测试数据;
insert into test_aaa values(1, 111, 222);
insert into test_aaa values(3, 333, 444);
insert into test_aaa values(2, 555, 666);
3、查询表中数据;可以看下id并没有排序;
select * from test_aaa;
4、重新排序后,再取第一条记录;并去bbb字段的长度;
select id, length(bbb) lb
from (select * from test_aaa order by id) t
limit 1;
直接写alter table语句修改字段类型及长度,或者在数据库连接客户端右键修改表来设置字段长度。