我的日常开发记录日志
首页
  • Laravel
  • Thinkphp
  • Swoole
  • Workman
  • php
  • HTML
  • CSS
  • JavaScript
  • Vue
  • ES6
  • 小程序
  • Mysql
  • Redis
  • Es
  • MongoDb
  • Git
  • Composer
  • Linux
  • Nginx
  • Docker
  • Vpn
  • 开发实战
  • 开发工具类
  • 友情链接
💖关于
💻收藏
  • 分类
  • 标签
  • 归档数据
GitHub (opens new window)

我的日常开发记录日志

never give up
首页
  • Laravel
  • Thinkphp
  • Swoole
  • Workman
  • php
  • HTML
  • CSS
  • JavaScript
  • Vue
  • ES6
  • 小程序
  • Mysql
  • Redis
  • Es
  • MongoDb
  • Git
  • Composer
  • Linux
  • Nginx
  • Docker
  • Vpn
  • 开发实战
  • 开发工具类
  • 友情链接
💖关于
💻收藏
  • 分类
  • 标签
  • 归档数据
GitHub (opens new window)
  • mysql

    • Mysql
    • 哈希分表
    • 严格模式
      • 单表数据过大的解决方案
      • 分表分库带来的新问题
      • 数据容量查询
      • 海量数据生成和删除
      • mysql编辑的sql
      • showprocess用法
    • redis

    • mongodb

    • es

    • 数据库
    • mysql
    窝窝侠
    2024-07-15

    严格模式

    不同版本的 MySQL 可能在某些默认行为上有所不同,特别是在处理 NULL 值或默认值方面。MySQL 5.6.44 可能比 5.6.13 更严格,因此你遇到了这个问题。

    以下是一些可能的原因和解决方法:

    # 1. 检查 SQL 模式

    MySQL 的严格模式可能会导致这个问题。你可以检查当前的 SQL 模式,并根据需要进行调整。

    # 检查当前 SQL 模式

    你可以使用以下 SQL 语句查看当前的 SQL 模式:

    SELECT @@GLOBAL.sql_mode;
    SELECT @@SESSION.sql_mode;
    
    1
    2

    # 修改 SQL 模式

    如果你发现 STRICT_TRANS_TABLES 或其他严格模式在其中,可以尝试临时禁用它:

    SET @@GLOBAL.sql_mode = 'NO_ENGINE_SUBSTITUTION';
    SET @@SESSION.sql_mode = 'NO_ENGINE_SUBSTITUTION';
    
    1
    2

    请注意,这只是临时修改,重启 MySQL 服务后会恢复默认设置。如果需要永久修改,请编辑 MySQL 配置文件(如 my.cnf 或 my.ini),然后重启 MySQL 服务。

    # 2. 确认表结构

    确保你的表结构在两个版本中是一致的。你可以使用 SHOW CREATE TABLE your_table; 查看表结构。

    # 3. 设置字段默认值

    确保在 MySQL 5.6.44 中为 contents 字段设置了默认值。你可以使用以下 SQL 语句修改表结构:

    ALTER TABLE your_table MODIFY COLUMN contents TEXT DEFAULT '';
    
    1

    # 4. 插入数据时指定字段值

    在插入数据时,明确为 contents 字段指定一个值(即使是空字符串)。例如:

    INSERT INTO your_table (other_column1, other_column2, contents) VALUES ('value1', 'value2', '');
    
    1

    # 5. 允许字段为 NULL

    如果你想允许 contents 字段为空,可以将其设置为允许 NULL 值,并在插入数据时忽略这个字段。假设你的表名是 your_table,可以使用以下 SQL 语句:

    ALTER TABLE your_table MODIFY COLUMN contents TEXT NULL;
    
    1

    然后插入数据时可以忽略 contents 字段:

    INSERT INTO your_table (other_column1, other_column2) VALUES ('value1', 'value2');
    
    1

    # 总结

    MySQL 版本之间的差异可能会导致一些默认行为的变化。通过检查 SQL 模式、确认表结构、设置字段默认值或允许字段为 NULL,你应该能够解决这个问题。如果问题依然存在,请检查 MySQL 文档以获取更多详细信息。

    在线编辑 (opens new window)
    上次更新: 2025/02/25, 18:30:54
    哈希分表
    单表数据过大的解决方案

    ← 哈希分表 单表数据过大的解决方案→

    最近更新
    01
    showprocess用法
    04-29
    02
    vue3中尖括号和冒号的使用细则
    04-29
    03
    sd使用
    02-22
    更多文章>
    🖥️

    © 2025窝窝侠 💌 豫ICP备20005263号-2 🛀 Theme by 💝 Vdoing && 小胖墩er

    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×