• MySQL数据迁移遇到的一些错误


    背景

    在做MYSQL数据库移植的时候,遇到一些问题,把这些问题记录下来,以备后查

    sql_mode

    很多校验都和这个mode有直接关系

    1. ## 导入sql文件,发生如下错误
    2. MySQL:[Err] 1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'CREATE_TIME' at row 1

    诱因 

    这是由于当前的MySQL不支持datetime为0的状况。

     通过一下命令查选当前的sql_mode

    select @@global.sql_mode;

    解决方式

    设置当前的sql_mode 

    1. ## 当前
    2. set @@sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

     进入mysql命令界面执行一下命令

    1. ## 全局
    2. set @@global.sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

    PS:以上两种方式都能暂时解决问题,但是当数据库重启之后,之前做的修改会失效 

    修改my.ini配置文件 

    只有修改配置文件,才能永久的解决这个问题,在my.ini文件中追加

    sql_mode = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    重新执行 select @@global.sql_mode;

     

     

    一直报表格不存在的错

    确认表格存在,但是查询一直报表格不存在报错,此时可能是因为以为mysql对大小写敏感导致的,可以修改该配置

    在my.ini文件中追加以下代码

    1. ## 使用该命令查看当前系统中的大小写敏感配置
    2. show global variables like '%case%';
    1. ## lower_case_file_system 系统是大小写敏感的-不需要改
    2. ## lower_case_table_names 当前是大小写敏感的,需要改成1
    3. +------------------------+-------+
    4. | Variable_name | Value |
    5. +------------------------+-------+
    6. | lower_case_file_system | OFF |
    7. | lower_case_table_names | 0 |
    8. +------------------------+-------+
    9. 2 rows in set (0.01 sec)
    lower_case_table_names = 1

     增加配置之后,重启服务再次查看

     

    问题得以解决,如果是不在配置文件中配置,会在下次服务重启,使得之前的配置失效,产生一些不太好排查的问题,所以,如果不是特意需要暂时修改的话,都在配置文件中修改

     

     

     

     

     

     

      

     

     

     

     

     

     

  • 相关阅读:
    ubuntu20环境搭建+Qt6安装
    MySQL的主从复制
    新增一块新磁盘后,扩充逻辑卷lv大小
    星环科技数据中台解决方案,助力某政府机构建设新型智慧城市
    黑客首选攻击语言为什么是Python?你知道吗?
    一分钟让你学会如何合并PDF文件
    leetcode-每日一题-119-杨辉三角2(简单,dp)
    数据结构-双向链表创建
    OpenCV图像金字塔
    C/C++中内存开辟与柔性数组
  • 原文地址:https://blog.csdn.net/hu10131013/article/details/125439019