![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
实战中遇到的mysql问题
痴情的程序员
分享不易,您的点赞就是我的动力!
展开
-
解决Error while sending STMT_PREPARE packet. mysql has gone away
这篇文章主要记录解决Error while sending STMT_PREPARE packet. mysql has gone away,做个记录可能不是最优办法。问题情况描述:php+workerman 客户端是闸机检票,通过udp协议与服务器连接,近期发现错误日志中出现这两个错误Error while sending STMT_PREPARE packet. mysql has gone away已经有一段时间了,之前没关注过,近期影响了检票,于是查了一下,发现出现Error whi原创 2022-03-09 09:47:37 · 2747 阅读 · 0 评论 -
mac mysql取消自启动
目录和mysql 版本根据自己的修改即可cd /usr/local/Cellar/mysql@5.7/5.7.34/launchctl unload -w ./homebrew.mxcl.mysql@5.7.plist#想要再次开启就是launchctl load -w ./homebrew.mxcl.mysql@5.7.plist原创 2022-03-08 16:57:53 · 1090 阅读 · 0 评论 -
mac 设置mysql环境变量
mac 设置mysql环境变量首先来看一下这两个文件.bash_profile和.zshrc都在用户目录下 这两个文件都在~下.bash_profile需要使用source执行下,也就是 source ~/.bash_profile 方可生效(可能需要手动创建.bash_profile).zshrc修改环境变量,保存修改重启终端即可(需要安装oh-my-zsh自动创建.zshrc,直接手动创建.zshrc没有用)我这里使用的是 .zshrcvim ~/.zshrcexport PATH=原创 2022-03-08 16:00:04 · 744 阅读 · 0 评论 -
mysql设置远程访问/禁止远程访问
查看mysql数据库中的所有用户:mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;#将host设置为localhost表示只能本地连接mysqlupdate user set host='localhost' where user='root';flush privileges; #刷新权限表,使配置生效设置远程连接update user set ho原创 2021-09-26 11:57:48 · 340 阅读 · 0 评论 -
mysql数据结构
mysql 一个磁盘叶存储16kb数据 innob_page_size空白区域存储分叉节点磁盘文件地址内存中的数据查找消耗的时间跟磁盘IO比可以忽略不计为什么innodb 必须建主键 并且推荐使用整形自增主键因为他设计的就是必须要有一个b+tree 来组织我们整张表数据,如果没有主键,他回去表里面逐列去找一个不重复的列创建唯一索引,如果没有他会自己创建一列隐藏列帮你维护B+tree 的数据结构字符串比大小要逐位去比较,还要转成ascii码去比较重存储空间来讲,整形占的空间比较小...原创 2021-06-14 11:15:14 · 187 阅读 · 0 评论 -
mysql 查询截取分析,慢查询日志
慢查询日志1、说明:MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上的语句。由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条sql执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒的sql,结合之前ex原创 2021-06-08 14:18:16 · 118 阅读 · 0 评论 -
mysql 关联查询优化 子查询优化 order by group by 关键字优化
关联查询优化1、保证被驱动表的join字段已经被索引2、left join 时,选择小表作为驱动表,大表作为被驱动表。但是 left join 时一定是左边是驱动表,右边是被驱动表 right join 相反3、inner join 时,mysql会自己帮你把小结果集的表选为驱动表。mysql 自动选择。小表作为驱动表。因为 驱动表无论如何都会被全表扫描?。所以扫描次数越少越好4、子查询尽量不要放在被驱动表,有可能使用不到索引。子查询优化 用in 还是 exists1、有索引的情况下 用inn转载 2021-06-08 11:45:03 · 829 阅读 · 0 评论 -
mysql索引失效的几种情况
1、没有遵循索引最左原则。 建立几个复合索引字段,最好就用上几个字段。2、最佳左前缀法则 如果索引了多列,要遵守最左前缀法则,指的是查询从索引的最左前列开始,可以跳过但是尽量不跳过索引中间的列。3、不再索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描4、存储引擎不能使用索引中范围条件右边的列。(范围之后全失效) 若中间索引列用到了范围(>、<、like等),则后面的索引全失效 范围 若有索引则能使用到索引,范围条件右边的索引会失效(范围条件右原创 2021-06-07 11:05:24 · 686 阅读 · 0 评论 -
MySql explain各字段解释
id select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序id相同,执行顺序由上至下id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行衍生表 = derived2 --> derived + 2 (2 表示由 id =2 的查询衍生出来的表。type 肯定是 all ,因为衍生的表没有建立索引)select_type 查询的类型,..转载 2021-06-04 18:18:47 · 114 阅读 · 0 评论 -
存储引擎InnoDB MyISAM MEMORY区别MySql事务,事务隔离级别
MyISAM存储引擎?它管理的表具有以下特征:使用三个文件表示每个表:格式文件 — 存储表结构的定义(mytable.frm)数据文件 — 存储表行的内容(mytable.MYD)索引文件 — 存储表上索引(mytable.MYI):索引是一本书的目录,缩小扫描范围,提高查询效率的一种机制。可被转换为压缩、只读表来节省空间 提示一下: 对于一张表来说,只要是主键, 或者加有unique约束的字段上会自动创建索引。 MyISAM存储引擎特点: 可被转换为压缩、只读表来节省空间原创 2021-06-04 14:56:15 · 227 阅读 · 0 评论 -
limit 用法 分页公式
完整用法:limit startIndex, lengthstartIndex是起始下标,length是长度。起始下标从0开始。缺省用法:limit 5; 这是取前5.注意:mysql当中limit在order by之后执行!!!!!!分页:每页显示3条记录第1页:limit 0,3 [0 1 2]第2页:limit 3,3 [3 4 5]第3页:limit 6,3 [6 7 8]第4页:limit 9,3 [9 10 11]每页显示pageSize条记录 第pageNo页:原创 2021-06-04 14:19:25 · 460 阅读 · 0 评论 -
union合并查询结果集
select ename,job from emp where job = 'MANAGER'unionselect ename,job from emp where job = 'SALESMAN';+--------+----------+| ename | job |+--------+----------+| JONES | MANAGER || BLAKE | MANAGER || CLARK | MANAGER || ALLEN | SALESMAN原创 2021-06-04 14:07:21 · 410 阅读 · 0 评论 -
mysql 数据处理函数 聚合函数
数据处理函数/单行处理函数lower 转换小写select lower(ename) as ename from emp;upper 转换大写select upper(name) as name from t_student;substr 取子串(substr( 被截取的字符串, 起始下标,截取的长度))select substr(ename, 1, 1) as ename from emp; 注意:起始下标从1开始,没有0.concat函数进行字符串的拼接sele原创 2021-06-04 13:50:51 · 91 阅读 · 0 评论 -
tp6 count distinct统计时根据字段去重
代码:AppointmentModel::field(['identity'])->count('distinct identity')生成的sql:SELECT COUNT(DISTINCT `identity`) AS think_count FROM `dg_appointment`;下面是tp6手册内容我尝试着这样写 发现生成的sql不对AppointmentModel::distinct(true)->field(['identity'])->count('id原创 2021-05-27 17:27:23 · 2430 阅读 · 0 评论 -
mysql substring() 截取字符串查询。查询身份证的前两位并统计。用来解决地区统计
substring(str, pos, len)SELECT count(id) as total ,substring(identity,1,2) as area FROM `dg_appointment` WHERE `org_id` = 1 GROUP BY area;原创 2021-04-30 10:02:17 · 277 阅读 · 0 评论 -
用Navicat运行一个比较大的.sql文件时报错:[Err] 2006 - MySQL server has gone away
因为navica本身做了限制 所以导致报错。解决方法:工具–> 服务器监控–>mysql出现下面页面:选择 变量 ,找到 max_allowed_packect ,修改它的值即可。原创 2021-04-30 09:57:55 · 56 阅读 · 0 评论 -
navicat导出数据字典
select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,COLUMN_TYPE,COLUMN_COMMENT from information_schema.columns where TABLE_SCHEMA='数据库名'原创 2021-04-29 15:41:35 · 93 阅读 · 0 评论 -
mysql批量修改表前缀
SELECTCONCAT('ALTER TABLE ',table_name,' RENAME TO te_',substring(table_name, 4),';')FROMinformation_schema. TABLESWHEREtable_schema = 'testadmin'AND table_name LIKE 'hp_%';原创 2021-04-29 15:40:33 · 67 阅读 · 0 评论 -
tp6模型名称与数据库表名不一致SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘jn.jnhead‘ doesn‘t exist
SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘jn.jn_head’ doesn’t existtp6 Model 名称与数据库表名不一致的问题定义$nameprotected $name = 'article'原创 2021-04-29 15:30:35 · 593 阅读 · 0 评论 -
mysql报错SQLSTATE[HY000] [2002]
将hostname由localhost 改为127.0.0.1 就好使了 原因不知道原创 2021-04-29 15:20:45 · 489 阅读 · 0 评论