• mysql 数据库 自动截取数据的问题---mysql的sql_model的四种模式:宽松模式、严格模式


    mysql支持的sql_mode模式:ANSI、TRADITIONAL、STRICT_ALL_TABLES和STRICT_TRANS_TABLES。 

    ANSI模式:宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报warning警告。

    TRADITIONAL模式:严格模式,当向mysql数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误。用于事物时,会进行事物的回滚。

    STRICT_TRANS_TABLES模式:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。只对支持事务的表有效。

    STRICT_ALL_TABLES模式:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。对所有表都有效。

    问题描述:

    添加一个超长的文章的时候,文章内容字段被mysql截取后插入。

    debug:程序插入的sql没有问题。

    问题原因:mysql 使用了松散模式,造成自动截取。给debug带来困难,

    解决办法:

    1,开启mysql 严格模式,对开发有好处;

    2,换mysql的字段类型

    参考:

    下面贴一下mysql中和text相关的类型最大长度限制,请根据业务类型进行合理选择:

    TINYTEXT 最大长度是 255 (2^8 – 1) 个字符。

    TEXT 最大长度是 65535 (2^16 – 1) 个字符。

    MEDIUMTEXT 最大长度是 16777215 (2^24 – 1) 个字符。

    LONGTEXT 最大长度是 4294967295 (2^32 – 1) 个字符。

    通过修改MySQL的配置文件,在配置文件中查找sql-mode,将此行修改成为:

    sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

    如果查找不到sql-mode=则在[mysqld]下加入即可,推荐第二种方法,可以一劳永逸。

  • 相关阅读:
    http基础知识摘录
    数据库基础常用知识
    2018第18周总结
    pycharm里html注释是{# #}而不是<!-- -->?
    paramiko错误信息:Paramiko error: size mismatch in put
    jmeter的Classpath即类或者jar包的搜索路径设置
    scp、paramiko、rsync复制文件的区别
    maven打包插件maven-shade-plugin简单介绍
    sqlalchemy多表联合查询的左连接、右连接等使用
    如何查看sqlalchemy执行的原始sql语句?
  • 原文地址:https://www.cnblogs.com/duanxz/p/3770181.html
Copyright © 2020-2023  润新知