› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
ben548
V2EX  ›  MySQL

mysql 超出字段长度自动截取的问题

  •  
  •   ben548 · Dec 17, 2015 · 7926 views
    This topic created in 3945 days ago, the information mentioned may be changed or developed.

    在开发中我遇到两个现象:
    1. content 字段在 mysql 的数据类型定义为 varchar(2000),但是表单提交过来的数据是 3674.数据库在 insert 的时候并没有报错,而是自动截取了。
    2. mysql 的数据类型定义为 varchar(4000),应用没有重启还是会自动截取。

    那么问题来了,这个是 php 处理的呢还是 mysql 处理的?

    8 replies  •  2015-12-17 22:04:19 +08:00
    ben548
        1
    ben548  
    OP
       Dec 17, 2015
    额,自问自答一下吧,
    ben548
        2
    ben548  
    OP
       Dec 17, 2015
    自问自答一下,经过测试证实是 mysql 做的处理,另外修改字段长度之后不需要重启就能立即生效。。。我好傻
    better0332
        3
    better0332  
       Dec 17, 2015
    你查查 varchar 最大长度是多少
    ben548
        4
    ben548  
    OP
       Dec 17, 2015
    @better0332 65535 个字节,字符类型若为 gbk ,每个字符最多占 2 个字节,最大长度不能超过 32766;
    字符类型若为 utf8 ,每个字符最多占 3 个字节,最大长度不能超过 21845 。这个跟问题的关联在哪里啊?
    moro
        5
    moro  
       Dec 17, 2015
    修改字段类型为 text
    ben548
        6
    ben548  
    OP
       Dec 17, 2015
    结贴啦,问题已经解决了
    Zzzzzzzzz
        7
    Zzzzzzzzz  
       Dec 17, 2015
    @ben548 你这是 mysql<=4.0 时代没编码时期按字节算时代的东西, 现在设置编码正确的话 n 就是 n 个字, 不管是中文还是英文, 除非你编码设置错, 不过原则上不建议 varchar 超过 255.
    elgoog1970
        8
    elgoog1970  
       Dec 17, 2015
    为啥不用 text 呢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2320 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:49 · PVG 17:49 · LAX 02:49 · JFK 05:49
    ♥ Do have faith in what you're doing.