mysql 常用操作(错误)

1、mysql 5.7 关于group by 错误:

(1)临时性设置:重启后错误还是存在

select @@global.sql_mode;
set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

(2)找到my.cnf文件,添加到最后,重启mysql服务 service mysql restart

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

2、mysql 新增多条其他表查询数据:

INSERT INTO sys_role_auth (role_id,auth_id)(SELECT 1,auth_id from sys_auth); 

3、nginx解决图片跨域访问问题:

img访问配置中新增:

add_header Access-Control-Allow-Origin *;

add_header Access-Control-Allow-Headers X-Requested-With;

add_header Access-Control-Allow-Methods GET,POST,OPTIONS;

4、更改表字段编码

ALTER TABLE life_goods CONVERT TO CHARACTER SET  utf8mb4 COLLATE utf8mb4_general_ci;

5、更新字段为另一张表字段

UPDATE life_purchase,life_goods SET life_purchase.price =  life_goods.dis_price WHERE life_purchase.goods_id = life_goods.goods_id AND life_purchase.period = 20200604

6、navicat查看所有进程:show processlist; 杀死等待的或卡死的进程: kill PID;(有些守护进程杀不死,请使用kill -9 PID

7、查看事务  

SELECT * FROM information_schema.innodb_trx; 

  • 判断事务是否长时间未提交:根据 innodb_trx 表中的 trx_started 字段,判断事务是否已经执行了很长时间而未提交。如果是,可能是因为业务逻辑错误或者程序异常导致事务一直处于打开状态。
  • 检查事务执行的 SQL 语句:查看 innodb_trx 表中的 trx_query 字段,了解事务正在执行的 SQL 语句。如果发现是一个复杂的查询或者更新操作,可能需要优化该 SQL 语句或者终止该事务。
  • 等待事务提交或回滚:如果事务即将完成,可以选择等待事务自然提交或回滚。你可以通过定期查询 innodb_trx 表来监控事务的状态。
  • 手动回滚事务:如果确定事务是由于程序异常或者业务逻辑错误导致长时间未提交,可以手动回滚该事务。首先,根据 innodb_trx 表中的 trx_mysql_thread_id 字段获取事务对应的线程 ID,然后使用以下命令终止该线程:

  kill 10217

查看锁信息:使用以下 SQL 语句查看当前的锁信息:

  • SELECT * FROM information_schema.innodb_locks;
posted @ 2020-01-21 15:35  FkLee  阅读(191)  评论(0)    收藏  举报