博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ThinkPHP 踩坑录
阅读量:5834 次
发布时间:2019-06-18

本文共 786 字,大约阅读时间需要 2 分钟。

本文主要记录在使用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. 修改 制度约束

转载于:https://www.cnblogs.com/liaohui5/p/10581549.html

你可能感兴趣的文章
ISNUMBER函数的创建以及函数创建思路。
查看>>
用\r做出进度条
查看>>
3.rabbitmq--发布订阅模式
查看>>
上海公交投诉电话:12319
查看>>
灰度预测
查看>>
iOS自带API集成二维码、条形码扫描
查看>>
Android WebView存在跨域访问漏洞(CNVD-2017-36682)介绍及解决
查看>>
随机数
查看>>
HTML5画布Canvas
查看>>
制作首页的显示列表
查看>>
.net中 Timer定时器
查看>>
幸福人生讲座(二):人生怎样才能幸福?
查看>>
面试总结之Database
查看>>
初识CPU卡、SAM卡/CPU卡简介、SAM卡简介 【转】
查看>>
Uva 10557 - XYZZY(DFS+BFS)
查看>>
团队Git使用教程
查看>>
Zookeeper与Kafka基础概念和原理
查看>>
JQ多行文本溢出省略号插件
查看>>
Apache性能优化总结
查看>>
javascript事件之: 事件冒泡, 事件捕获 ,阻止默认事件
查看>>