mysql
SHUIPING_YANG
事在人为,凡事预则立,不预则废!
展开
-
mysql删除多条重复数据,只保留id最小的那一条数据
由于此前激活码表没有做唯一键索引,结果客服在手动导入激活码数据的时候点了多次,导致相同的激活码被多次导入,因此需要删掉重复的激活码数据,只保留重复数据中的一条即可.因此得到以下sql语句: DELETE FROM `xxx` WHERE id IN (SELECT id FROM (SELECT id FROM xxx WHERE sn IN (SELECT sn FROM xxx GROUP BY sn HAVING COUNT(sn)>1) AND id NOT IN(SELECT MIN(原创 2022-01-11 10:08:13 · 1046 阅读 · 0 评论 -
mysql优化innodb表
项目中有个表经常增删改,因此定期需要优化一下表:optimize table `vip_active_anonymous`;执行下面语句直接提示:Table does not support optimize, doing recreate + analyze instead.查过资料表明,optimize table 对于innodb来说,无法作为a single operation,实际的操作是:ALTER TABLE test.foo ENGINE=InnoDB; -- 比较费时,测原创 2021-10-13 17:50:30 · 404 阅读 · 0 评论 -
mysqld: Table ‘mysql.plugin‘ doesn‘t exist
mysql启动报错,原因是mysql8需要初始化:mysqld --initialize --user=mysql --console如果继续报错,需要查看错误信息,一般会是data目录已经存在,那么按照提示删除data目录即可。再次执行尚需命令即可,这时候输出会显示root的初始密码。...原创 2021-07-22 11:30:05 · 2312 阅读 · 0 评论 -
临时或永久查看mysql执行的所有语句日志
临时记录:SET GLOBAL general_log = 'ON';SET GLOBAL general_log_file = 'C:/Users/admin/Desktop/log2/general_log.log';永久记录vim /etc/my.cnfgeneral_log = 1general_log_file = /var/log/mysql/general_sql.log# 然后重启mysqldservice mysqld restart记录示例:D:\laragon\原创 2021-07-09 10:27:08 · 178 阅读 · 0 评论 -
mysql交换表名
借助一个虚拟表名,一句sql搞定表交换,注意,这种不太适合频繁插入更新的表.除非你不在乎那几秒的数据.RENAME TABLE `as_product` TO t3,as_product_bak TO `as_product`, t3 TO as_product_bak;原创 2021-06-21 16:47:34 · 397 阅读 · 0 评论 -
安装mysql8.0最新版lnmp
1.安装mysql8.0官方文档:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html下载rpmyum localinstall http://mirrors.ustc.edu.cn/mysql-repo/mysql80-community-release-el7-3.noarch.rpm安装rpmyum install mysql-community-server启动mysql服务端servic原创 2020-05-22 10:59:49 · 3501 阅读 · 0 评论 -
You must reset your password using ALTER USER statement before executing this statement.
mysql8安装完成以后,修改初始密码报错:mysql> ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘MyNewPass4!ysp123456’;ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.修改root的初始密码:ALTER USER原创 2021-04-25 16:56:40 · 215 阅读 · 0 评论 -
MYSQL的全局变量和会话变量
系统变量又分为全局变量与会话变量。全局变量在MYSQL启动的时候由服务器自动将它们初始化为默认值,这些默认值可以通过更改my.ini这个文件来更改。会话变量在每次建立一个新的连接的时候,由MYSQL来初始化。MYSQL会将当前所有全局变量的值复制一份。来做为会话变量。(也就是说,如果在建立会话以后,没有手动更改过会话变量与全局变量的值,那所有这些变量的值都是一样的。)全局变量与会话变量的区别就在于,对全局变量的修改会影响到整个服务器,但是对会话变量的修改,只会影响到当前的会话(也就是当前的数据库连接)转载 2020-12-16 13:42:58 · 2469 阅读 · 0 评论 -
mysql获取所有的表结构及备注
根据库名导出所有表信息:SELECT *FROM information_schema.`TABLES`WHERE TABLE_SCHEMA = 'vipaos_center'根据库名导出所有表名及表备注:SELECT TABLE_NAME, TABLE_COMMENTFROM information_schema.`TABLES`WHERE TABLE_SCHEMA = 'db_name';mysql获取整个哭的所有表,及表结构:原创 2020-08-27 14:49:35 · 6812 阅读 · 0 评论 -
mysql select into
执行报错:select * into users_bak from users;mysql不支持这个语法,但是支持下面这种方式,效果和select into一样,表不存在的会新创建,存在的话会报错:CREATE TABLE users_bak SELECT * FROM users where last_login_time<=1588855806;...原创 2020-08-05 15:52:04 · 3136 阅读 · 0 评论 -
MySQL this is incompatible with sql_mode=only_full_group_by having count
查看当前mysql的sql_mode配置:select @@GLOBAL.sql_mode就是这里限制了,解决办法如下:vim /etc/my.cnf在mysqld下面加上这个:sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION再次查询:查询有重复的值:SELECT id,count(*) as counts FROM原创 2020-07-28 22:33:33 · 208 阅读 · 0 评论 -
mysql命令行导出整个库里面所有表的前一百条数据
mysqldump -uysp -pYspxxx db_name --where="1=1 limit 100" >/mnt/share/paxxx.com/backup.sql直接在命令行运行就可以了,不需要登陆mysql客户端。原创 2020-07-14 16:50:48 · 1777 阅读 · 2 评论 -
The server requested authentication method unknown to the client
mysql 安装了最新版本8.0.20后创建用户并授权后,授权的用户连接数据库提示:The server requested authentication method unknown to the client这是由于php的mysqld拓展不支持caching_sha2_password加密方式:只需要改一下登陆账号的认证方式即可:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';...转载 2020-05-22 18:49:48 · 907 阅读 · 0 评论 -
mysql使用换行符连接group_concat
SELECT `Req`.*, group_concat(AasDefRf.wip_start_time SEPARATOR "char(10)") wip_start_time, group_concat(AasDefRf.pro_ready_time_1 SEPARATOR "char(10)") pro_ready_time_1, group_con...转载 2020-03-04 17:19:30 · 4981 阅读 · 1 评论 -
Mysql导入导出文件
1、导出数据库:mysqldump -u dbuser -p -d --add-drop-table dbname >d:/dbname_db.sql注意:-d 没有数据,只有数据结构–add-drop-table 在每个create语句之前增加一个drop table 如果需要导出数据和数据结构,去掉-d即可!例子:导出myfarm数据库中的表结构:C:\Users\shuiping>my原创 2017-02-22 17:57:42 · 648 阅读 · 0 评论 -
mysql字符集
转载:https://www.cnblogs.com/a757956132/p/4314891.html一、字符集1.mysql的字符集设置非常灵活可以设置服务器默认字符集;数据库默认字符集;表默认字符集;列字符集;如果某一级别没有指定字符集,则继承上一级。查看所有字符集语句:show character set;2.以表声明为utf-8为例,最终存储在表中的数据为utf-8...转载 2019-03-21 09:48:06 · 149 阅读 · 0 评论 -
mysql存在外键导入导出
mysql导入导出也许最简单不过了,但是当存在外键的时候,而且导入的表依赖另一个还未导入的表的时候,就直接报错了,停止导入.首先在将要导入的数据库打开mysql命令行,执行 :SET FOREIGN_KEY_CHECKS=0; 取消外键约束,导入之后再执行SET FOREIGN_KEY_CHECKS=1; 恢复外键约束.laravel导入导出权限的时候: \DB::stat...原创 2019-01-08 10:13:20 · 3613 阅读 · 1 评论 -
You must reset your password using ALTER USER statement before executing this statement.
mysql初始安装之后,登陆进去啥操作也操作不了,需要修改下密码,但是只能使用下面这个语句:alter user user() identified by "123456";这个命令的意思是修改当前用户的密码为123456....原创 2018-12-20 10:05:30 · 3913 阅读 · 0 评论 -
Navicate设计模型使用方法
1、选择右上角模型:2、点击新建表格:3、右键在选中的空白处点击右键,选择添加栏位,输入栏位名字,按tab键可以继续输入下一个栏位名;4、在空白处点击右键,选择设计,然后进去切换到外键这一项就可以了5、导出sql...原创 2018-09-06 14:10:46 · 7506 阅读 · 0 评论 -
This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
向mysql导入函数的时候,报这个错误,解决办法如下:set global log_bin_trust_function_creators=TRUE;原创 2018-08-06 14:13:31 · 5609 阅读 · 0 评论 -
MySQL server has gone away
我碰到这个问题是因为一次插入的数据量比较大,超过限制了,修改以下参数即可:修改参数:mysql> set global max_allowed_packet=1024*1024*16;mysql> show global variables like 'max_allowed_packet';转载:https://www.cnblogs.com/fnlingnzb-learn...转载 2019-04-26 18:02:11 · 349 阅读 · 0 评论 -
千万级别mysql数据表优化
第一优化你的sql和索引;第二加缓存,memcached,redis;第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护;第四如果以上都做了还是慢,不要想着去做切分,mysql自带分区表,先试试这个,对你的应用是透明的,无需更改代码,但是sql语句是需要针对分区表做优化的,s...转载 2019-05-03 21:52:02 · 583 阅读 · 0 评论 -
查看mysql支持的数据类型
查看mysql支持的引擎,我们都知道是:mysql> show engines;查看支持的数据类型:mysql> ? data types;查看命令帮助:? command原创 2019-06-09 11:07:55 · 3028 阅读 · 1 评论 -
mysql反查优化记录
有数据库相关的问题,我有一个表,里面有三列,customer简化之后表结构如下:idnamesource1客户1a渠道2客户1b渠道3客户2a渠道4客户3a渠道5客户1c渠道我现在的逻辑是根据传进来的id查找name,然后再根据name来查找id;select id,name from customer where nam...原创 2019-06-14 16:44:10 · 402 阅读 · 0 评论 -
mysql的find_in_set优化
优化程序过程中碰到个问题,表中的属性字段记录了很多属性id,表中总记录为80多万行,每行76列,简化表如下,此前使用的是 like '%,2019,%'这种方式查询,需要1300ms,改成find_in_set方式之后,变成1100ms左右,已经给ids加了索引,但是explain sql发现并没有用到。请问有什么方式可以把这个查询油画到300ms以内?ids列加了索引table prods;...原创 2019-06-25 10:49:15 · 17030 阅读 · 5 评论 -
phpmyadmin设置多个不同服务器的数据库
phpmyadmin是非常强大并且好用的工具,就是界面有点丑陋。以前不怎么用,现在看到身边好几个同事都在用这个,如是决定尝试一下,敲命令会有各种提示,表名搜索过滤,尤其是表很多的时候,这个就显得非常方便了。复制phpmyadmin根目录下面的config.sample.inc.phpcp config.sample.inc.php config.inc.php修改其内容如下:<?...原创 2019-06-27 13:01:16 · 1369 阅读 · 1 评论 -
mysql查询最近半年数据,本季度,本年
1 、 查看当天日期select current_date();2、 查看当天时间select current_time();3、查看当天时间日期select current_timestamp();4、查询当天记录select * from 表名 where to_days(时间字段名) = to_days(now());5、查询昨天记录select * from 表名...转载 2019-08-05 15:59:11 · 11537 阅读 · 4 评论 -
mysql中使用生日作比较
直接查询年龄段,我们表里面记录的是生日,但是我们需要根据年龄段来筛选,不需要做各种转换,mysql自带有日期处理函数。sql语句如下:SELECT * from teacher_info where DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 between 0 and 21;...原创 2018-07-25 17:47:33 · 1830 阅读 · 1 评论 -
Cannot truncate a table referenced in a foreign key constraint (alerting.datapoints, CONSTRAINT data
在truncate表的时候报告以下错误,意思是有的表有外键关联,不能清空。SQLSTATE[42000]: Syntax error or access violation: 1701 Cannot truncate a table referenced in a foreign key constraint (alerting.datapoints, CONSTRAINT datapoints_s原创 2018-04-20 11:14:27 · 966 阅读 · 0 评论 -
laravel group by errors
报错:SQLSTATE[42000]: Syntax error or access violation: 1055 'demo.archives.id' isn't in GROUP BY (SQL: select `id`, `author`, count(*) as total from `archives` where `created_at` >= 2016-10-18 and `crea原创 2018-03-02 10:35:41 · 1261 阅读 · 0 评论 -
A PHP Error was encountered Severity: Warning Message: mysqli::real_connect(): Headers and client
我把MySQL升级了一下,结果php链接数据库就报错了,查过资料之后发现是mysql版本变动,跟之前编译的版本不一致,因此才会报错,解决方法是重新编译一下mysqlnd,我的是yum安装的mysql和php,因此就非常简单。killall php-fpmyum remove php70w-mysqlyum install php70w-mysqlnd安装完之后重启一下php-fpm即可!原创 2017-07-03 18:09:45 · 7317 阅读 · 0 评论 -
mysql中 explain使用详解
在对某个Query优化过程中,须要不断地使用explain来验证各种调整是否有效。MySQL explain功能展示的各种信息的解释如下:id: MySQL Query Optimizer 选定的执行计划中查询的序列号。select_type: 所使用的查询类型,主要有以下这几种查询类型。DEPENDENT SUBQUERY:子查询内层的第一个select,依赖于外部查询的结果集。DEPENDENT原创 2017-06-21 16:16:41 · 480 阅读 · 0 评论 -
mysql数据库,mariadb数据库优化
查看默认的慢查询:MariaDB [(none)]> show variables like 'long_query_time';+-----------------+-----------+| Variable_name | Value |+-----------------+-----------+| long_query_time | 10.000000 |+------原创 2017-06-21 16:12:14 · 494 阅读 · 0 评论 -
linux下忘记密码修改数据库mysql密码
linux下mysql的root密码忘记解决方1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器的Cons原创 2017-04-05 15:15:03 · 1994 阅读 · 0 评论 -
开启mysql查询日志
废话不多说,直接上代码:打开mysql配置文件,my.ini,在[mysqld]下面添加以下两行代码:[mysqld]general_log=ONgeneral_log_file=D:/mysqllog/general_mysql.log 效果如下图:以后看别人的代码,就可以快速知道别人用的是什么数据库了,哪个数据表了。开发的时候开启,之后就删掉。建议在本地用。增删改查,全都可以看,只要是关系原创 2017-06-05 11:51:34 · 362 阅读 · 0 评论 -
查看mysql表是如何被创建的
查看表结构desc mf_car_info;查看数据库字符集:show variables like '%char%';更改字符集:set names utf8;原创 2017-05-17 14:57:51 · 1779 阅读 · 0 评论 -
查看mysql表中的所有索引
代码如下:mysql> show keys from table_name;结果列表中各字段的含义: · Non_unique如果索引不能包括重复词,则为0。如果可以,则为1。 · Key_name索引的名称。 · Seq_in_index索引中的列序列号,从1开始。 · Column_name列名称。 · Collation列以什么方式存储在索引中。在MySQL中,有原创 2017-05-24 18:29:54 · 28508 阅读 · 0 评论 -
mysql语句中if语句
sql语句中if语句。每个班级有多少人及格,有多少人不及格。SELECT class,sum(IF(score>60,1,0)) JIGE ,sum(IF(score<60,1,0)) BUJIGE FROM student GROUP BY class ;输出结果:mysql> select * from student order by class ,score;+----+-------+-原创 2017-02-07 21:07:54 · 2732 阅读 · 0 评论 -
Mysql常用命令大全
1.链接Mysql:格式: mysql -h主机地址 -u用户名 -p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql\bin,如果环境变量设置的是全局变量,则直接在命令行里面输入命令mysql -u root -p回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。如果刚安装好MYSQL,超级用户root是没有密码原创 2017-02-13 20:41:13 · 753 阅读 · 0 评论 -
mysql常用操作--调整字段顺序,修改备注comment
数据库操作:创建数据库:create database test1;删除数据库:mysql->drop database test;表格操作:修改表名: 把student表改为ss表:mysql> alter table student rename ss;创建std表:mysql> create table std (select * from test.student);注意:原创 2017-02-08 14:27:14 · 15667 阅读 · 0 评论