超出varchar指定长度为什么也成功存进数据库了???

本人基本上算个小白。。

前一段时间做数据库,我一直以为varchar是自动增长的,就随手把一个字段设置为了varchar(5000)。
但是今天在网上忽然发现varchar不能超过指定长度,简直崩溃, 因为出问题就全都要重做了。

可是我去数据库里面没有发现数据被截断啊?
图片说明

而且里面显示28741chars,不是明显超出5000了吗?

本人用的数据库是sqlite3.

求大神指点。感激不尽!

What is the maximum size of a VARCHAR in SQLite?

SQLite does not enforce the length of a VARCHAR. You can declare a VARCHAR(10) and SQLite will be happy to store a 500-million character string there. And it will keep all 500-million characters intact. Your content is never truncated. SQLite understands the column type of "VARCHAR(N)" to be the same as "TEXT", regardless of the value of N.
意思是你定义了长度,哪怕超出了还是不会被截取!官方原话如上。有点考古吧,但网上没人考究,我正好查到就给后面的人开开路
https://www.sqlite.org/faq.html#q9

 sqllite我不是很清楚,但是我知道Mysql记录行数据是有限的(不包含BLOB、TEXT、JSON列)大小为64k,即65535个字节,而varchar要用1-2字节来存储字段长度,小于255的1字节,大于255的2字节。
  Mysql 5.0后,英文字符固定都是一个字节,汉字字符根据编码方式占不同字节,Utf-8占3个字节,gbk占了2个字节。
绝对不建议你这么干。因为这样每一行的读取都非常困难,根本无法保证查询速度。或者就用text数据类型。

我不知道你这个有什么问题? 超出5000 能够存进去不是更好, 不需要扩充长度?

sqlite3 的数据类型有亲和类型这一说,可参考:https://www.runoob.com/sqlite/sqlite-data-types.html
也就是说。varchar(255) 和text其实都差不多,只是长度超过varchar(255) ,他会亲和为text数据类型, 而text数据类型的长度 是sqlite3的最大支持字符串长度, SQLITE_MAX_SQL_LENGTH ,其默认为 1000000