首页
4K壁纸
直播
统计分析
友情链接
搜索
1
#1031 – TABLE STORAGE ENGINE FOR ” DOESN’T HAVE THIS OPTION解决方法
1,107 阅读
2
让浏览器不显示 https 页面中 http 请求警报 http-equiv=”Content-Security-Policy” content=”upgrade-insecure-requests”
839 阅读
3
报错代码:ERROR 1227 (42000)-解决办法
635 阅读
4
微信个人商户号养号建议
528 阅读
5
解决移动端position:fixed随软键盘移动的问题
475 阅读
PHP
Mysql
Linux
Reids
Java
常用笔记
学习
乱七八糟
Search
标签搜索
php
千卡云支付
Mysql
Linux
redis
千卡云
千卡易支付
Nginx
shell
JS
JSON
支付宝
CentOS
Apache
支付
function
database
fastadmin
phpstorm
快捷键
蓝科迪梦
累计撰写
69
篇文章
累计收到
0
条评论
首页
栏目
PHP
Mysql
Linux
Reids
Java
常用笔记
学习
乱七八糟
页面
4K壁纸
直播
统计分析
友情链接
搜索到
7
篇与
的结果
2025-03-29
mysql中 for update 使用方法
for update是在数据库中上锁用的,可以为数据库中的行上一个排它锁。当一个事务的操作未完成时候,其他事务可以读取但是不能写入或更新。 例子: 比如一张表三个字段 , id(商品id), name(商品名字) , count(数量) 当商品抢购时候会显示剩余商品件数,如果并发量大的时候,商品自减的值可能不准确。所以当我们在一个事务中对count字段进行修改的时候,其他事务应该只能读取指定id的count,而不能进行update等操作。这个时候就需要用到for update. sql语句: start transaction ; select * from table_name where id =1 for update ; update table_name set count = count - 1 where id= 1; 此时如果另一个事务也想执行类似的操作: start transaction ; select * from table_name where id =1 for update ; //下面的这行sql会等待,直到上面的事务回滚或者commit才得到执行。 update table_name set count = count - 1 where id= 1; *注:当选中某一个行的时候,如果是通过主键id选中的。那么这个时候是行级锁。 其他的行还是可以直接insert 或者update的。如果是通过其他的方式选中行,或者选中的条件不明确包含主键。这个时候会锁表。其他的事务对该表的任意一行记录都无法进行插入或者更新操作。只能读取。* 那是一种行级锁,一旦用户对某个行施加了行级加锁,则该用户可以查询也可以更新被加锁的数据行,其它用户只能查询但不能更新被加锁的数据行.如果其它用户想更新该表中的数据行,则也必须对该表施加行级锁.即使多个用户对一个表均使用了共享更新,但也不允许两个事务同时对一个表进行更新,真正对表进行更新时,是以独占方式锁表,一直到提交或复原该事务为止。行锁永远是独占方式锁。 只有当出现如下之一的条件,便释放共享更新锁: (1)、执行提交(COMMIT)语句; (2)、退出数据库(LOG OFF) (3)、程序停止运行。 那么,什么时候需要使用for update?就是那些需要业务层面数据独占时,可以考虑使用for update。场景上,比如火车票订票,在屏幕上显示邮票,而真正进行出票时,需要重新确定一下这个数据没有被其他客户端修改。所以,在这个确认过程中,可以使用for update。这是统一的解决方案方案问题,需要前期有所准备
2025年03月29日
5 阅读
0 评论
0 点赞
2025-03-18
/usr/sbin/mysqld: Can't open file: '**.frm'(errno: 24 - Too many open files)
kangle主机开的主机多了mysql就容易挂,每次都要重启mysql才能解决,今天抽空查了下日志,看到大量这个报错: /usr/sbin/mysqld: Can't open file: '**.frm'(errno: 24 - Too many open files) 主要原因: lock tables时候文件打开句柄太多导致,可以适当调大文件打开数句柄。 解决方法: 在 /etc/mysql/my.conf 中,你需要增加MySQLs内部 open_files_limit。 所以暂时将这个添加到配置并重启 MySQL。 [mysqld] open_files_limit = 100000 /bin/systemctl restart mysqld.service ============================ 因为kangle主机有很多的小白用户,发现存在很多死进程,为了保证稳定性和长期免维护,又在定时任务中加了定期重启mysql 配置crond服务启动计划需要编辑etc目录下的crontab文件内容,直接用Vim编辑它: vim /etc/crontab vim编辑命令不熟的可以搜索一下,不难,添加一行,比如我要每天凌晨2:30自动重启一次mysql就添加下面这样一行: 30 2 * * * root /bin/systemctl restart mysqld.service 保存重启下crontabs就可以了. /bin/systemctl restart crond.service
2025年03月18日
17 阅读
0 评论
0 点赞
2025-03-18
mysql查询json字段
一张openvpn表里存了一个stop字段是json类型的 表名:openvpn 字段:id int(11) , stop json(255) 假如stop的数据: { "surplus": 119, "opentime": 0 } 1.查询该stop里status这个字段数据: SELECT id,JSON_EXTRACT(stop,'$.status') as status FROM `openvpn` 2.查询该stop里status这个字段为0的数据: SELECT id,JSON_EXTRACT(stop,'$.status') as status FROM `openvpn` WHERE JSON_EXTRACT(stop,'$.status') = 0 3.查询该stop里status这个字段不为1且id大于10000的数据: SELECT id,JSON_EXTRACT(stop,'$.status') as status FROM `openvpn` WHERE JSON_EXTRACT(stop,'$.status') != 1 AND `id` > 10000 备注:通过json_extract函数,获取到了json对象的特定key的值
2025年03月18日
13 阅读
0 评论
0 点赞
2025-03-18
which is not functionally dependent on columns in GROUP BY clause
报错信息:which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 在对连接表进行select查找时出现以上报错信息。 打开【my.ini】文件 添加如下代码在【mysqld】中 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION 保存,重启mysql即可
2025年03月18日
15 阅读
0 评论
0 点赞
2022-12-07
Mysql和Redis的本质区别
1.mysql和redis的数据库类型 mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。 redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限 2.mysql的运行机制 mysql作为持久化存储的关系型数据库,相对薄弱的地方在于每次请求访问数据库时,都存在着I/O操作,如果反复频繁的访问数据库。第一:会在反复链接数据库上花费大量时间,从而导致运行效率过慢;第二:反复的访问数据库也会导致数据库的负载过高,那么此时缓存的概念就衍生了出来。 3.缓存 缓存就是数据交换的缓冲区(cache),当浏览器执行请求时,首先会对在缓存中进行查找,如果存在,就获取;否则就访问数据库。 缓存的好处就是读取速度快 4.redis数据库 redis数据库就是一款缓存数据库,用于存储使用频繁的数据,这样减少访问数据库的次数,提高运行效率。 5.redis和mysql的区别总结 (1)类型上 从类型上来说,mysql是关系型数据库,redis是缓存数据库 (2)作用上 mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢 redis用于存储使用较为频繁的数据到缓存中,读取速度快 (3)需求上 mysql和redis因为需求的不同,一般都是配合使用。
2022年12月07日
330 阅读
0 评论
0 点赞
2022-12-07
报错代码:ERROR 1227 (42000)-解决办法
考虑到数据库 MySQL 的稳定性和安全性,数据库 MySQL 限制了 super、shutdown、file 权限,有时在数据库 MySQL 上执行 set 语句时,会出现如下的报错: #1227-Access denied;you need(at least one of)the SUPER privilege (s) for this operation 解决方案: 删除SQL文件中的SET语句,然后重新导入就可以了 SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN; SET @@SESSION.SQL_LOG_BIN= 0; -- -- GTID state at the beginning of the backup -- SET @@GLOBAL.GTID_PURGED='341db1af-a492-11e9-a8b6-6c92bf48c732:1-216839'; SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;
2022年12月07日
635 阅读
0 评论
0 点赞
2022-12-02
#1031 – TABLE STORAGE ENGINE FOR ” DOESN’T HAVE THIS OPTION解决方法
有一个数据库是从mysql5.6要导进5.7。 出现了:1031 – Table storage engine for ‘这里是具体表名’ doesn’t have this option的错误 5.6是:MyISAM,5.7是:InnoDB。 原来5.6的默认为:ROW_FORMAT=FIXED 但是5.7不支持,我没有具体去看资料,可能是我这个版本吧。 然后把:ROW_FORMAT=FIXED改成: ROW_FORMAT=COMPACT 就可以正常导入执行sql了。
2022年12月02日
1,107 阅读
0 评论
0 点赞