zoukankan      html  css  js  c++  java
  • ThinkPHP 踩坑录

    本文主要记录在使用ThinkPHP过程中遇到的各种常见的错误:

    SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction

    导致这个错误出现的原因主要有2个: 频繁读写数据 事务锁

    • 频繁读写数据解决办法:

      1. 使用 memcache 或者 redis 缓存数据, 减轻数据库读写次数
      2. 根据业务逻辑, 拆分数据表, 让读写速度更快
    • 事务锁: 在开启A事务还没有结束的时候,又开启了B事务, 还操作了同一个表, 就会出现这样的错误

      1. 修改mysql的配置文件 my.ini , 怎么改?百度去吧..(作为一个开发者,不建议这么干, 运维也不一定同意)
      2. 优化代码: 取消其中一个事务

    model data not found

    使用 findOrFailselectOrFail 方法如果没有查询到数据就会抛出这个异常

    • 解决办法:
    1. 使用 try...catch 捕获这个异常
    2. 使用 findselect 方法,然后判断返回值

    undefind db type

    看ThinkPHP的源码发现, 连接数据库的时候就已经抛出异常了,一般出现这个错误,肯定是跨库操作导致

    7942449-86550f9a4902730a.png
    source code

    Numeric value out of range

    出现这个错误原因有2个 int 类型超过最大上限,使用 unsigned 但是存储了负数

    • int 类型最大是有上限的, 如果存一个特别大的数值就会存不进去, 这个遇见的几率较小

      1. 修改字段的数据类型
    • 由于 unsigned 约束不能存储负数, 如果在有这个约束的时候还存储负数就会存不进去

      1. 修改 制度约束
  • 相关阅读:
    python笔记——调试和异常处理
    [算法学习] 线段树,树状数组,数堆,笛卡尔树
    【cpp】G++中不支持static_cast?
    【生活感想】不够淡定
    数值线性代数小结
    伪逆
    统计机器学习
    Numerical Methods with MATLAB(1)
    吐槽iOS国际化:关于NSLocalizedString的使用
    iOS 沙盒路径操作:新建/删除文件和文件夹
  • 原文地址:https://www.cnblogs.com/liaohui5/p/10581549.html
Copyright © 2011-2022 走看看