• 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

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

     

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

     

     

     

     

     

     

      

     

     

     

     

     

     

  • 相关阅读:
    网络安全—黑客技术—自学笔记
    JAVA:实现QuickSelect快速选择算法(附完整源码)
    数学建模——人工神经网络模型
    一个UE无法注册的问题
    TMS WEB Core 2.0.2 Retail
    C++ BFS相关题目
    优化——多目标规划
    持续性输出,继续推荐5款好用的软件
    Redis_10_Redis集群实现RedisCluster应对大数据量
    数据结构-难点突破(C++实现树的双亲表示法,孩子表示法,孩子兄弟表示法(树转化为二叉树))
  • 原文地址:https://blog.csdn.net/hu10131013/article/details/125439019