首页
关于
Search
1
在投射和录制时显示敏感信息写给TeamViewer,anydesk,向日葵
8,643 阅读
2
sublime 3155-3175 LICENSE
7,963 阅读
3
mysql存储过程&时间累加插入
7,781 阅读
4
永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。
4,496 阅读
5
mysql-workbench中duration fetch的含义
4,483 阅读
ubuntu
linux
sublime
php
mysql
JS
CSS
其他
chrome
redis
登录
Search
标签搜索
mysql
curl
grep
journalctl
rename
You can't specify target table
only_full_group_by
Sub-process
警示
dropbox
mtr
curl抓取重定向
floor
intval
ceil
round
pixmap
adwaita
date.utc
gmmktime
五好的Book
累计撰写
194
篇文章
累计收到
31
条评论
首页
栏目
ubuntu
linux
sublime
php
mysql
JS
CSS
其他
chrome
redis
页面
关于
搜索到
194
篇与
的结果
2021-12-10
mysql8 安装与更改datadir数据目录
先上一张安装过程的输出日志:sudo apt install mysql-server 完全干净的删除 mysql 用sudo apt remove mysql* --purge 从日志来看, 安装过程中,显示创建一个root帐号然后 因为IO interfaces failed和mysqlx.sock failed 重启 逐个解决了这2个问题后安装并且启动完成。 现在我们来讲讲更改datadir的操作,经过卸载重安装多次循环操作后掌握了其更改datadir的核心技术^_^关于更改datadir 之前我有做过记录mysql 8 更改数据存放目录,不过现在再用这个办法已经不适用了,于是乎有了这新的篇章。 vi /etc/mysql/mysql.conf.d/mysqld.cnf 增加 datadir 的设置 如设置为:datadir = /data/mydata/ 设置好后 :x 或者:wq 保存退出这次其实就多了一步 就是设置 apparmor 设置好这里的别名,设置后就好了。vi /etc/apparmor.d/tunables/alias 打开后插入一行 如下:/data/mydata/ 为你希望的datadir alias /var/lib/mysql/ -> /data/mydata/, 值得注意的是:上面那个逗号不能少设置好后 :x 或者:wq 保存退出sudo systemctl restart apparmor 或者sudo service apparmor restart 然后初始化一下sudo mysqld --initialize 或者sudo mysqld --initialize-insecure --initialize-insecure 将初始化一个没有密码的root帐号最后 启动 mysqlsudo service mysql start
2021年12月10日
708 阅读
0 评论
0 点赞
2021-12-08
mysql之函数的应用
先上代码DELIMITER $$ CREATE DEFINER=`root`@`%` FUNCTION `aa`(ids int,tim varchar(16)) RETURNS int(11) BEGIN declare aaa int; if tim>0 then set @tim=tim; set @st = UNIX_TIMESTAMP(@tim); set @et=UNIX_TIMESTAMP(DATE_ADD(@tim, INTERVAL 1 MONTH)); select sum(m) into aaa from( SELECT `money_out`.`bid` AS `bid`, (SUM(`money_out`.`money`) / 100) AS `m` FROM `money_out` where bid=ids and ctime>=@st and ctime<@et union select `money_out_book`.`bid` AS `bid`, (SUM(`money_out_book`.`money`) / 100) AS `m` FROM `money_out_book` where bid=ids and ctime>=@st and ctime<@et) a; else select sum(m) into aaa from( SELECT `money_out`.`bid` AS `bid`, (SUM(`money_out`.`money`) / 100) AS `m` FROM `money_out` where bid=ids union select `money_out_book`.`bid` AS `bid`, (SUM(`money_out_book`.`money`) / 100) AS `m` FROM `money_out_book` where bid=ids) a; end if; RETURN aaa; END$$ DELIMITER ; 功能:该函数...先不说。 CREATE DEFINER=`root`@`%` FUNCTION `aa`(ids int,tim varchar(16)) RETURNS int(11) 创建一个函数名称是 aa 可以接收 2个参数 ids,和 tim 返回 一个整型的数据。 declare aaa int; 定义一个变量set @tim=tim; set @st = UNIX_TIMESTAMP(@tim); set @et=UNIX_TIMESTAMP(DATE_ADD(@tim, INTERVAL 1 MONTH)); 输入参数的传递 与转换select sum(m) into aaa from(...) tmp 把查询到的数据写入到变量 aaaRETURN aaa; 返回aaaOK,这个函数的功能是 计算给定的 书ID和时间 返回 对应的 的消费情况。如果有时间输入 则返回指定时间的数据, 否则返回该书所有的数据。这里是关于mysql 触发器的应用
2021年12月08日
728 阅读
0 评论
0 点赞
2021-12-04
记一次因session文件过多导致服务器node用尽的故事
最近服务器访问量逐步上升,cpu频繁告警,终于到了需要升级的时刻了, 配置已升级了就等待重启生效了。由于有过重启会要半个小时的经历,所以重启都有点担惊受怕,因配置升级,服务器在1分钟内就重启完成了,瞬间cpu占用就下降了。然而故事还没有完,第二天,数据库又搞事情了,cpu告警, 这就轻车熟路了升级数据库, 升级很顺利,告警也解除了,然而看了服务器的各项参数,发现了一项异常, 服务器根目录挂载的分区的node 占用将近100%了, 可用数目一直在减少,立刻行动起来, 因为我们用户头像都存了一份在服务器的,起初我以为是到了该清理头像的时候了, 但是进目录一看, 头像数量不足以导致到这个数量级,然后找看是那个目录占用了大量的node。我把我认为可能的文件夹都用find ./文件夹名称 |wc -l 找了一遍, 最后发现是 php的session存放的目录 存在大量的文件占用了 node。这里其实能更好理解node的意义, 所谓的node其实就是文件,一个文件对应一个node,硬盘的容量有限,存放文件的数量其实也是有限的, 所有文件数量的大小 没有达到硬盘的容量,但是文件数量达到了,照样写不进去内容。找到原因后, 然后马上采取行动,恢复node的数量,判断是 session文件没有及时删除:推测应该是访问量大的时候重启了系统没有自动销毁这些文件, 亦或由于大量的访问由于某种原因,导致了无效session文件的堆积,那么只要删除这些无效的session文件 即可。cd /var/lib/php find ./session/ -cmin +24 -name "sess_*" -and -size 0 -delete > /dev/null 2>&1 find ./session/ -cmin +1440 -name "sess_*" -delete > /dev/null 2>&1 php的session存放的目录定义在php的配置文件里, 可能和我的不一样。如果有缘人遇到一样的问题, 可以酌情修改下。
2021年12月04日
422 阅读
0 评论
0 点赞
2021-12-02
ubuntu搭配上gnome-shell插件让你沉浸式的干活娱乐
先来个截屏沉浸式的编码整个屏幕里只有代码,沉浸到令人窒息……^_^开始菜单桌面空间与手机交互用到的 插件如上喜欢的 可以到 https://extensions.gnome.org/ 搜索安装
2021年12月02日
600 阅读
0 评论
0 点赞
2021-11-29
用触发器来记录操作记录
直接上代码DROP TRIGGER IF EXISTS `trigger_book` ; DELIMITER $$ CREATE DEFINER=`root`@`%` TRIGGER trigger_book after update ON book FOR EACH ROW BEGIN declare nowtime int(11); set @b1 =''; set nowtime=unix_timestamp(now()); if (old.cooperation!=new.cooperation or new.base!=old.base or new.buyout!=old.buyout or new.into!=old.into or new.quan!=old.quan) then if (old.cooperation!=new.cooperation) then set @b1=concat(" 修改签约类型为:",new.cooperation," 旧值:",old.cooperation); end if; if (new.base!=old.base) then set @b1=concat(@b1," 修改保底为:",new.base," 旧值:",old.base); end if; if (new.buyout!=old.buyout) then set @b1=concat(@b1," 修改买断为:",new.buyout," 旧值:",old.buyout); end if; if (new.quan!=old.quan) then set @b1=concat(@b1," 修改全勤为:",new.quan," 旧值:",old.quan); end if; if (new.`into`!=old.`into`) then set @b1=concat(@b1," 修改分成为:",new.`into`," 旧值:",old.`into`); end if; insert into opt_log(opt_uid,opt_value,opt_time,bid)value(new.opt_uid,@b1,nowtime,new.id); end if; end $$# DELIMITER ; 以上是修改书的签约类型时,记录对应的人以及对应的修改前后的值。可能应用场景有限,但是这不需要在应用层去做相关功能, 直接数据库里就完事了。如果感兴趣还可以看看函数的应用
2021年11月29日
1,045 阅读
0 评论
0 点赞
1
...
7
8
9
...
39