数据库突然无法链接,无法访问
在公司运行的项目里,数据库突然无法链接,无法访问。利用工具链接数据库一样访问失效。
不排除:黑客串改了链接信息 或 直接删库 【当然这个是最严重结局】
这是我用finalshell 链接到项目的服务器查看。
首先服务器内部看看mysql是否在运行
1 | mysql -u[username] -p |
发现指令执行失败,mysql未被启动。
当下可以初步确定mysql进程中断了,需要重启。
1 | /etc/ini.d mysql restart |
报错:
ERROR! MySQL server PID file could not be found!
mysql 无法启动,那就要看看其他因素导致mysql启动不了,如系统内存不够导致无法启动程序。
1 | #这将显示以MB为单位的内存使用情况,包括已用内存、可用内存、缓冲区和交换空间。 |
发现交换空间为0,好家伙虚拟内存被冲爆了,那就是内存不够了。
连忙查看进程,因为该系统都是php在运行,所以先看看php进程
1 | ps -aux|grep php |
发现一列列的php进程。
基本确定就是php进程堆积导致mysql无法启动
1 | # 杀死所有PHP进程 |
重启后再次查看交换空间 发现直接归零了,再次重启mysql
1 | /etc/init.d/mysql restart |
启动成功,访问项目运行再次正常了。
后面就是优化该项目系统,系统项目执行进程很多时间过长导致僵尸进程一直保留,优化代码很有必要。(该项目特老旧,还是一个小白写的代码后面懒猫改差点没魂升天)
新项目上线出现的小问题
有个新项目,是一个小伙伴负责,当前也要提交线上了。(给他练练手一个新的服务器,本地运行都ok,部署到线上发现很多问题)以下是我帮忙查看最后解决问题,新手小白很容易出错的
因为两套域名访问,导致提交忘记修复 【以后的处理是,该类配置文件不放到提交代码内,直接提交服务器】
m端域名解析,nginx要处理好伪静态,否则是无法访问的
控制器的访问本地没有大小写问题,但到了线上就有【下次一定要注意】
如果访问不是404,而是php 内错误页面,要打开php错误访问 【快速清晰的判断,并合理利用工具】
VUE编译访问域名后带#
vue 如何编译 不带域名后面#
在Vue中,可以使用vue-router来处理路由。默认情况下,当我们点击链接时,URL会被添加到历史记录并且页面将重新加载。
要想去除URL中的域名部分(包括#),需要进行配置。首先,确保已经安装了vue-router库。然后,按照以下步骤操作:
创建一个新文件 router/index.js,该文件将存放路由相关的配置信息。
最重要的就是要更改路由模式,由hash(哈希)变为history(历史模式)
导入所需模块:
1 | import Vue from 'vue' |
注册路由器:
1 | Vue.use(Router) |
定义路由表:
1 | const routes = [ |
创建路由实例:
1 | export default new Router({ |
nginx配置修改
在指定的访问域名下配置.conf里加入
1 | location / { |
移动端如何浏览EXCEL、word、ppt、pdf等文件在线预览?
简单的前端处理方式 (不建议)
或者JS
window.open(文档地址); //新建窗口打开链接预览
window.location.href = 文档地址; //本页面内跳转链接实现预览
这种方式在不同浏览器上表现不一样,部份手机浏览器直接不能直接不能打开或是表现为下载,基本不实用,如果预览PDF,可以使pdf.js这样的纯JS库但是实际场景用时要做各种格式判断浏览判断麻烦死了。
如果是微信小程序,可以使用微信接口:downloadFile和openDocument
1 | wx.downloadFile({ |
如果明确只有微信使用可以考虑,只是如果有浏览直接使用或钉钉之类不行,而且如果后面更换到浏览器或WEBAPP又要更换也挺麻烦的。
pfile的文件预览工具 (举荐)
1 | window.open('http://www.pfile.com.cn/api/profile/onlinePreview?url='+encodeURIComponent(“文档地址”)); |
其实本质是用 http://www.pfile.com.cn网址,他做的工具,打开使用页面十分干净清晰。
唯一要说的缺点,那只能是打开的不是我们自己的域名,没发二次开发。
UniApp集成PDF在线预览功能
- 导入PDF.js库:首先,在UniApp项目中引入PDF.js库,这是一个开源的JavaScript库,用于在网页中渲染和预览PDF文件。
- 实现PDF预览组件:在UniApp项目中创建一个PDF预览组件,该组件包含了PDF.js库所需的相关代码和样式,用于展示PDF文件内容。
- 调用PDF预览组件:在需要预览PDF文件的页面中,通过调用PDF预览组件,并传入PDF文件的URL或二进制数据,即可在应用内实现PDF文件的在线预览功能。
麒麟arm版服务器遇到相关问题
安装 docker
- (麒麟rpm下载)[https://update.cs2c.com.cn/NS/V10/V10SP1/os/adv/lic/base/aarch64/Packages/]
- 搜索
docker-engine-18.09.0-101.ky10.aarch64.rpm然后放到服务器内 - 执行
rpm -ivh docker-engine-18.09.0-101.ky10.aarch64.rpm - 查看是否安装成功
docker --version
下载docker离线包
(下载地址)[https://download.docker.com/linux/static/stable/]
选择系统架构对应的文件目录:aarch64,我目前使用的docker版本是:docker-20.10.21.tgz
下载 docker-compose离线包
查看docker-compose 版本 : docker-compose --version
(Github下载地址)[https://github.com/docker/compose/releases]
选择对应系统架构的离线安装包,我目前使用的版本是:v2.17.2
docker.service
1 | docker.service |
1 | # 进入安装文件存放目录 |
问题
本来docker好好的能启动,然后服务器重启以后就启动不了docker了。cpu架构是aarch64
1 | Error response from daemon: failed to create task for container: |
麒麟 docker启动容器提示“Warning:IPv4 forwarding is disabled.Networking will not work.”
1 | #查看更改前的配置 |
Job for docker.service failed because the control process exited with error code
- 问题描述
启动docker服务:systemctl restart docker
提示:Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.
- 问题解决
进入docker目录:
cd /etc/docker/修改daemon的类型:
mv daemon.json daemon.conf重启docker:
systemctl restart docker
安装apt
wget http://ports.ubuntu.com/pool/main/a/apt/apt_1.6.1_arm64.deb # 下载deb文件sudo dpkg -i apt_1.6.1_arm64.deb # 安装apt
[但你会发现 没有dpkg命令很无语,然后呢 还是选用了yum来处理]
yum使用
初始的yum是没有用的,要更换源,所以找到合适的源很重要。
换源操作:
1 | #进入配置文件夹 |
遇到数据查询,已有的数据查询查出来为空,然后插入数据,死循环
例: account 账户有3w多个,重复账户同一个有700-800多
当前每次远端拉取数据,然后去mysql中查询是否有存在account账户,存在不插入数据,不存在插入数据。
【注:数据库量一次性获取3w多条。】
问题: 数据库表存在重复账户,且能查到,但查询判断就是为空,导致数据无线插入。
解决办法:
- 更改account属性,变为唯一值。 【最后放弃,有软删除】
- 发现account账户存储长度 为
char(22), 发现重复账户都是过长,且为开启mysql的严格模式,导致被截断存储,所以查询是就是找不到。 所以更改存储长度varchar(50)
1 | #停止防火墙 |






