Mysql 使用遇到的问题总结一

一、导入数据时:1062 - Duplicate entry ‘0’ for key ‘PRIMARY’

  • 原因:
    • 主键重复,或者设置了唯一索引
  • 二、Column count doesn’t match value count at row 1

    • 解释:
      • 存储的数据与数据库表的字段类型定义不相匹配。
    • 解决办法:
      • 检查段类型是否正确, 是否越界,有无把一种类型的数据存储到另一种数据类型中.看看dao层访问数据库的sql语句是否书写错误,赋值的参数是否与字段类型一致
    • 可能原因:
      • 列数不相等; 书写错误;
  • 三、Packet for query is too large

    • 问题列表:
    • 描述:
      • mysql的max_allowed_packet设置过小引起的,默认设置的是 1024. mysql 根据配置文件会限制 server接受的数据包大小,有时候大的插入和更新会被max_allowed_packet 参数限制。导致失败
    • 图片显示:
    • 执行命令:
      • set global max_allowed_packet = 210241024*10;
  • 四、Mysql 远程连接缓慢的问题

    • 在 [mysqld] 下添加
      • skip-name-resolve
    • 可能的原因:
      • mysql主机查询DNS很慢;
      • 有很多客户端主机时会导致连接很慢;
  • 五、[Err] 1093 - You can’t specify target table ‘x’ for update in FROM clause

    • 例子:
      • UPDATE user SET name=“onenote” WHERE id IN (SELECT id FROM user  WHERE id = 4967 AND STATUSIN (0, 1, 4));
    • 原因:
      • update语句中包含的子查询的表和update的表为同一张表时,报错:1093-Youcan’t specify target table for update in FROM clause
      • mysql不允许update目标表和子查询里面的表为同一张表
    • 解决办法:
      • 利用子查询sql可以改变双层的子查询,即可执行成功 (但性能较差,仅仅适合较小的数据量的)
    • 修改:
      • UPDATE user  SET name=“onenote” WHERE id IN(SELECT * FROM ( SELECT u.idFROM user u WHERE id = 4967 ANDSTATUS IN (0, 1, 4)) AS temp);
  • 六、Lock wait timeout exceeded; try restarting transaction。

    • 描述:
      • ERROR 1205(HY000): Lock wait timeout exceeded; try restarting transaction。
    • 解决方式:
      • 1、查看数据库事务隔离级别
        • select @@transaction_isolation;
      • 2、查看当前数据库的线程情况;
        • show full processlist
      • 3、如果没有查看到执行的较慢的sql记录线程,就查看innodb 的事务表INNODB_TRX, 查看是否有正在锁定的事务线程,看看其id 是否存在于 show fullprocesslist 的sleep线程中,如果是,就证明这个sleep 的线程事务一直没有commit或者rollback,线程阻塞了。手动kill 掉;
        • 1、select * from information_schema.INNODB_TRX;
        •    2、kill 114849
  • 七、错误: java.math.BigInteger在连接MySQL时无法强制转换为java.lang.Long (ClassCastException:)

    • 显示:
      • Caused by:java.lang.ClassCastException: java.math.BigInteger cannot be cast tojava.lang.Long
    • 可能原因:
      • 当我们要求JDBC驱动程序建立连接时,它在场景之后做了很多工作,然后才真正给我们提供了正确的连接工作对象。
      • 您的MySQL版本与您的mysql-connector.jar版本相结合似乎存在问题。尝试使用较新版本的MySQLConnector (请升级到8.0.12版。)

猜你喜欢

转载自blog.csdn.net/wind1_rain/article/details/107827829