数据库

MySQL错误修复记录:Table xx is marked as crashed and should be repaired

昨晚入睡后,收到松哥的QQ消息,说松松商城打开报错,于是手机QQ上打开了首页地址,发现有如下报错: 关键报错信息: Table 'ecs_users' is marked as crashed and should be repaired 提示这张表损坏了,必须修复,登陆服务器之后,开始修复,以下记录备忘。 1、尝试使用myisamchk命令对所有表索引文件进行修复: myisamchk --safe-recover /path/to/*.MYI 2、刷新首页依然报错,于是登陆MySQL,执行 REPAIR TABLE ecs_users; 3、提示无法修改拥有着属性,应该是上一步使用myisamchk命令时文件所属变成了root了,于是用chown更该拥有者: 4、然后继续登陆MySQL执行 REPAIR TABLE ecs_users;  成功: 在刷新网站,已经正常:   事后总结:一般这个报错都是因为数据库表索引文件损坏导致的,发现这类错误可以尝试使用phpMyAdmin的Repair自动修复功能。如果不行,先将数据库文件做好备份,然后按照本文的步骤尝试修复吧。
阅读全文
数据库

MySQL主从报错解决:Failed to initialize the master info structure

大清早收到一个MySQL的自定义语言告警 :replication interrupt,看来是主从同步报错了。 登陆MySQL,执行 show slave status \G 发现salve已经停止了,于是使用 start slave启动,结果有如下报错: 搜索了下,网上给出的解决办法基本都是: ①、执行 reset slave; ②、重新执行 change master: ③、执行 start slave 于是试了下,发现还是一样的报错,顺着报错信息,看了下error 日志: 发现其中频繁出现如下错误: 于是,把MySQL 数据文件目录下的 index info 文件都看了一遍,结果发现 Centos64-relay-bin.index文件中出现异常内容: 这个文件正常情况应该是记录了 bin-log文件名称才对,比如: 因此,将 Centos64-relay-bin.index 这个文件mv 重命名,然后重启MySQL,重新按照上文从网上照来的的步骤:reset、change master、start 成功搞定! 如果你也遇到类似问题,可以先按照网上提供的三个步骤试试,如果还是和本文类似的报错,请特别看下MySQL数据目录下的这几种文件: mysql-bin.index relay-log.info 主机名-relay-bin.index 可以尝试将他们重命名或移走,重启MySQL再走一遍上面的三个步骤应该可以搞定了!
阅读全文
数据库

MySQL错误修复:Table xx is marked as crashed and last (automatic?) repair failed

有站长找到我,说数据库坏了,访问网站报错如下: Error establishing a database connection 看了下MySQL的错误日志,报错如下: Error: Table './db_name/table_name' is marked as crashed and last (automatic?) repair failed 修复很简单,先停止MySQL:service mysqld stop 进入到MySQL数据库的文件存放目录,比如 cd /data/mysql/zhangge_db 然后执行如下命令: 执行完成后,为了保险起见,我们要将文件的权限改回MySQL的运行账号(自行查看),比如mysql: 启动MySQL:service mysqld start 最后,执行再次自动修复优化命令即可解决:
阅读全文
数据库

单机MySQL数据库优化推荐的编译安装参数

MySQL编译参数多而复杂,让新手感到很头大,如果是正式生成环境安装MySQL,没有充足的时间去研究每一个参数代表的意义,个人建议使用余洪春前辈整理的编译参数,便捷高效! MySQL的线上安装建议采取编译安装的方法,这样性能上有较大提升,,源码包的编译参数会默认以Debgu模式生成二进制代码,而Debug模式给MySQL带来的性能损失是比较大的,所以当我们编译准备安装的产品代码时,一定不要忘记使用“—without-debug”参数禁用Debug模式。 而如果把—with-mysqld-ldflags和—with-client-ldflags二个编译参数设置为—all-static的话,可以告诉编译器以静态方式编译和编译结果代码得到最高的性能。 使用静态编译和使用动态编译的代码相比,性能差距可能会达到5%至10%之多。 编译参数如下所示(适合5.4及之前的版本):
阅读全文
数据库

Linux系统下MongoDB的简单安装与基本操作

Mongo DB ,是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式,备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB中 每一条记录都是一个Document对象。Mongo DB最大的优势在于所有的数据持久操作都无需开发人员手动编写SQL语句,直接调用方法就可以轻松的实现CRUD操作。 一、下载mongodb 前往mongodb官网下载页面:https://www.mongodb.org/downloads下载相应的版本,比如目前的Linux x64位最新版:mongodb-linux-x86_64-2.6.4.tgz 不过有点坑爹是,下载链接明明是tgz格式,结果下载后变成了gz格式: 先下载看看好了。 二、解压mongodb 得到的是mongodb-linux-x86_64-2.6.4,居然是个文件,而不是文件夹,和网上说的大相径庭: 看来前面下载的确实存在问题!实际上应该是tgz文件才对,按经验分析了一下,下载的实际上还是tgz文件,显示为gz文件只是形式上的假象!所以,gzip只解压了压缩包的外层,实际上还需要解压一层tar存档属性! 于是,先将解压后的文件重命名加上tar格式: 然后,使用tar解压即可: 将解压后的文件夹移动&重命名至/usr/local/mongodb bin下的mongod就是MongoDB的服务端进程,mongo就是其客户端,其它的命令用于MongoDB的其它用途如MongoDB文件导出等。 三、启动mongodb 启动前,先指定mongodb的data目录,如果没有就创建一个: 然后,执行如下命令即可启动mongodb:   启动成功后,可查看是否启动成功了,默认端口号是27017,当然在启动时也可以指定未使用的其它端口。 最后,将客户端mogo文件在/bin下软链接,方便随处执行:   现在使用mongo客户端访问一下该数据库: 安装成功! 四、附:基本操作 参考文章①:http://blog.csdn.net/ssyan/article/details/6927307 参考文章②:http://blog.chinaunix.net/uid-26558059-id-3211264.html
阅读全文
数据库

MySQL之Field ‘***’doesn’t have a default value错误解决办法

今天,中国博客联盟有博友反馈,zgboke.com无法提交博客,当时我正好准备去假日广场聚会,就匆匆忙忙的提交试了下,发现提交博客的时候确实报如下错误: 提示web_pic不能为空值。很纳闷,之前都可以成功提交的,为什么突然不行了?看了下网上的案例,说是需要修改MySQL的配置什么的,但是目前博客联盟是挂在京东云擎的,数据库不能修改配置,按理说之前可以正常提交,后面应该也可以才对啊! 由于聚会时间快到了,就先放在一边了。回到家之后,对比了下网上的类似案例,原来是web_pic这个键值设置了不为空导致的,也就是在创建表的时候,使用了not null属性。于是进入mywebsql,登入京东云擎数据库,进行了如下操作: 提交后,发现可以成功提交了!出现这个错误的愿意,应该是我最近导入导出数据库太频繁,create tables语句出现错误导致的。 下面,整理一下网上的相同问题的其他解决办法,方便出现问题的同学参考: 1、打开my.ini,查找 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 修改为 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 然后重启MYSQL 2、MySQL 5 uses a strict mode which needs to be disabled. In Windows, Goto Start-->Programs-->MySQL->MySQL Instance Config Wizard. Follow through the Reconfigure Instance option-->Detailed Configuration-->Continue Next a few screens. At the bottom under Enable TCP/IP option there is 'Enable Strict Mode'. Deslect this option (no tick). Save changes and MySQL will restart. 3、看看你的数据库定义的时候是不是把主键生成方式设置为int的,但是没有设置为自增的!!或者数据定义的时候设置一个默认值就可以了。
阅读全文