标签:raspbian mysql raspberry-pi segmentation-fault
我有一个Raspberry Pi服务器与Raspbian操作系统:
Kernel: Linux 4.9.35+ #1014 Fri Jun 30 14:34:49 BST 2017 armv6l GNU/Linux
Description: Raspbian GNU/Linux 8.0 (jessie)
Release: 8.0
Codename: jessie
今天我注意到使用mysql的尝试以分段错误结束.
user@host~ $mysql -u root -p
Enter password:
Segmentation fault
错误密码和正确密码都会发生这种情况.或者即使我填写了用户名.实际上,事实证明,即使运行mysql命令而没有任何参数也具有相同的效果.
仍然可以通过Python(pymysql)和Perl访问Mysql服务器.我有编写和读取各种DB的脚本,它们都可以正常工作.
使用mysql命令的Shell脚本都会失败.例如:
/home/user/example.sh: line 2: 27974 Segmentation fault /usr/bin/mysql -u dbuser -p$dbpass dbname --execute="select * from example;"
分段错误今天开始出现,我无法确定现在导致它们的原因.几周后服务器尚未启动.自上次更新以来已有一周多了.
我从Mysql日志或syslog中找不到任何可能与此情况相关的错误.
我试过了:
>重启Mysql
>升级系统并重新启动
>重新启动时检查磁盘,未发现错误
由于这些程序没有帮助,我尝试使用gdb,如下所示:
Running application ends with “Segmentation Fault”
这是我在没有任何参数的情况下调试mysql命令时得到的结果:
gdb mysql
跑
跑
启动程序:/usr/bin/mysql
gdb mysql
run
Starting program: /usr/bin/mysql
Program received signal SIGSEGV, Segmentation fault.
elf_dynamic_do_Rel (skip_ifunc=<optimized out>, lazy=0, nrelative=<optimized out>, relsize=<optimized out>,
reladdr=<optimized out>, map=0xb6fff968) at do-rel.h:112
112 do-rel.h: No such file or directory.
我想知道我该怎么做才能解决这个问题? (除了制作关于此的错误报告.)
解决方法:
您很可能已损坏二进制文件/和/或损坏的文件系统/ SD卡.
SD卡不适用于繁重的I / O使用,并且会随着时间的推移而降级;由于其设计特点(电子设备不是我的区域,无法详细说明),Raspberry(es)也会因为偶尔关闭而损坏SD卡中的数据.
您可能在mysql二进制文件或相关库上存在损坏. (实际上在do-rel.h中出现gdb故障表明后者).
我会重新安装mysql客户端和相关的库,作为一个类似于这个的命令(你的里程可能会有所不同):
sudo apt-get install --reinstall default-mysql-client default-mysql-client-core
我会使用此命令来查看哪个包提供了mysql二进制文件并将重新安装它:
dpkg -S /usr/bin/mysql
然后我还会看到mysql正在使用的库,如果这不能解决问题:
ldd /usr/bin/mysql
linux-vdso.so.1 (0x00007ffc8903c000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5989c75000)
libreadline.so.5 => /lib/x86_64-linux-gnu/libreadline.so.5 (0x00007f5989a33000)
libncurses.so.5 => /lib/x86_64-linux-gnu/libncurses.so.5 (0x00007f5989810000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f59895e6000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f59893cc000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f59891c8000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f5988e46000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5988b42000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f59887a3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f598a4bc000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f598858c000)
作为最后的手段,您可以重新安装支持每个库的每个包,直到您纠正错误为止.其中一些是:libaio1,libjemalloc1,libreadline5.还有更多.
sudo apt-get install -reinstall libaio1 libjemalloc1 libreadline5
但是,无法保证您的文件系统的其他位没有损坏.我会备份数据库并从头开始重新安装OS / MySQL.
好消息是你提到访问数据库的其他方法运行良好,这意味着腐败主要与mysql二进制客户端有关.
尽管如此,我可能会在将来重新评估从SD卡运行Linux,特别是如果使用MySQL.
PS.正如@cas指出的那样,“如果你安装了dlocate或debsums,你可以运行dlocate –md5check PKGNAME或debsums PKGNAME来验证软件包安装的文件是否符合其md5sum文件”
见Raspberry: booting from a USB pen instead of an SD card
标签:raspbian,mysql,raspberry-pi,segmentation-fault 来源: https://codeday.me/bug/20190814/1654613.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。