zoukankan      html  css  js  c++  java
  • MySQL之常见错误

      1)mysql导入较大sql文件,出现MySQL server has gone away

    ERROR 2006 (HY000) at line 3312 in file: 'E:xampphtdocsSsCpcdjm.sql': MySQL server has gone away
    No connection. Trying to reconnect...

      官方解释是适当增大 max_allowed_packet 参数可以使client端到server端传递大数据时,系统能够分配更多的扩展内存来处理

      查看max_allowed_packet的值

    show global variables like 'max_allowed_packet'

      解决:

      a)临时调整

    set global max_allowed_packet=268435456

      b)永久调整

    修改配置文件 my.cnf/my.ini 
    max_allowed_packet=256M

      2) 使用导入命令进行数据导入的时候, 出现 " "  "" 字符的时候,无法入的问题

      需要指定导入的字符集,统一字符集

    #登陆时,指定字符集
    mysql -uroot -p123456 --default-character-set=utf8mb4
    
    >> source import.sql

       3) SQL报错:1366, "Incorrect string value: '\xF0\x9F\x98\x81

        这是字符集不匹配导致,mysql不能识别4个字节的utf8编码的字符,这应该也是问题的根源。☺、��、类似于这种4个字节,将对应字符类型换成将对应的数据类型改为utf8mb4类型,同时连接类型也要改成utf8mb4_general_ci

    1、检查数据库字符集;
    
    2、检查数据表字符集;
    
    3、检查字段字符集;
    
    4、连接数据库的字符集;
    
    将以上字符集改为utf8mb4
    show variables like 'character%';
    set character_set_database=utf8;
    set character_set_server=utf8;

      注意: utf8mb4的最低mysql版本支持版本为5.5.3+,若不是,请升级到较新版本。select version();

      4) mysql5.7报错this is incompatible with sql_mode=only_full_group_by(注意点: 添加到mysqld下面)

      

    [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

      

    select @@global.sql_mode;

    ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

      解决:

    去掉ONLY_FULL_GROUP_BY,重新设置值。
    [mysqld]
    set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

      5)Mysql删除表提示Cannot truncate a table referenced in a foreign key constraint解决办法

      

    删除之前先执行删除外键约束
    SET foreign_key_checks = 0
    
    
    删除完之后再执行启动外键约束
    SET foreign_key_checks = 1

      6)1093 - You can't specify target table

       分析:对同一张表进行操作,先查询,再将查询出来的数据作为条件去修改这张表,会报错 1093 - You can’t specify target table ‘XXXX’ for update in FROM clause, Time: 0.001000s。意思是说:无法在FROM子句中为更新指定目标表。

      解决:添加临时表,多一层查询

    UPDATE nl_media 
    SET top_read_count = fans_count * 0.02,
    other_read_count = fans_count * 0.02 
    WHERE
        id IN ( SELECT id FROM (SELECT id FROM nl_media WHERE fans_count <> 0 AND top_read_count = 0 ) t);

      7) mysql报错:1030, 'Got error 28 from storage engine'

       出现这个问题, 一般都是因为磁盘已经占满, 没有可以存储的空间导致的错误

    使用df -h
    
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        911M     0  911M   0% /dev
    tmpfs           920M  4.9M  915M   1% /dev/shm
    tmpfs           920M  904K  919M   1% /run
    tmpfs           920M     0  920M   0% /sys/fs/cgroup
    /dev/vda1        50G   35G   12G  75% /
    tmpfs           184M     0  184M   0% /run/user/1003
    tmpfs           184M     0  184M   0% /run/user/0
    tmpfs           184M     0  184M   0% /run/user/1005
    
    进入到大的文件目录中
    df -sh *
    查看目录下各个文件的大小
    
    进入目录中, 查看文件(按照从大到小排序)
    ls -lhS

      

      8)ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

        启动mysql服务出现的错误

        解决:

        1) 查看sock文件是否存在:/var/run/mysqld/mysqld.sock 

        2) 如果文件不存在,则mysql配置文件

     vim   /etc/mysql/my.cnf
    
    [mysqld]
    max_connections=1000
    
    !includedir /etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/
    
    
    mysql的配置在/etc/mysql/mysql.conf.d目录下的mysqld.cnf文件
    查看相关信息: 
        bind-address = 127.0.0.1      
        socket = /var/run/mysqld/mysqld.sock

        3) 如果不存在目录则创建,启动服务

    sudo mkdir -p /var/run/mysqld
    sudo chown mysql /var/run/mysqld/
    sudo service mysql restart

        注意: 启动mysql的时候,要sudo 最高权限,否则会出现创建不成功的情况

        4) 有可能连接指定的ip不支持, 例如之前使用的localhost无法进行连接, 而使用127.0.0.1进行连接,即可 

      

  • 相关阅读:
    strstr 函数的实现
    函数模板与模板函数
    内核态和用户态
    最短路径算法(跟新SPFA,Ford)
    P1042 乒乓球
    P2347 砝码称重
    P1087 FBI树
    P1540 机器翻译
    P1028 数的计算
    P1067 多项式输出
  • 原文地址:https://www.cnblogs.com/xingxia/p/mysql_errors.html
Copyright © 2011-2022 走看看