raspberry-pi – 从shell使用时的Mysql segfaulting
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了raspberry-pi – 从shell使用时的Mysql segfaulting,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3555字,纯文字阅读大概需要6分钟。
内容图文
我有一个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
内容总结
以上是互联网集市为您收集整理的raspberry-pi – 从shell使用时的Mysql segfaulting全部内容,希望文章能够帮你解决raspberry-pi – 从shell使用时的Mysql segfaulting所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。