ERROR 1135 (HY000): Can't create a new thread (errno 11); 引发的血案

本文详细记录了一次遇到的数据库500错误,原因是磁盘空间已满。通过分析磁盘使用情况、识别问题原因并采取相应措施,最终成功解决了问题并防止了类似事件再次发生。

睡梦中,被红木城的电话call起来了,说application页面报500错误了。

打开电脑,登录公司内部oc通讯工具,leader以及manager以及sa以及minotor都在线呢,大家正在讨论中,他们已经可以确认问题在db了,我赶紧去后台检查db。


马上登录数据库,用root检查db状况:

[xxx@xxx-db003db1 mysqldata]$ mysql -uroot

ERROR 1135 (HY000): Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug


看到这个问题, wow,比较诡异啊,can't create a new thread,根据以往的经验:

1 磁盘满了

2 client connection满了。


马上执行

[xxx@xxx-db003db1 mysqldata]$ df -h

/dev/mapper/mysqldata
230G 230G 0G 100% /mysqldata


郁闷啊,怎么会100%呢,去/mysqldata目录看,N多binlog啊,于是OC通讯组里面汇报情况后,找sa去物理机上面给/mysqldata目录多分配100M的空间(这个步骤很重要,不然无法登陆MySQL命令行界面),然后马上去清理过多的bilog。

先去从库执行 show slave status\G找到最后的position

Master_Log_File: mysql-bin.001992

然后在出问题的主库上面登陆MySQL界面执行clear操作:

mysql> purge master logs to 'mysql-bin.012082';

Query OK, 0 rows affected (21.21 sec)


mysql> exit
Bye


[xxx@xxx-db003db1 mysqldata]$ df -h

/dev/mapper/mysqldata
230G 115G 0G 50%/mysqldata


OK,磁盘请空了。

然后login check下,能正常登录了。

[xxx@xxx-db003db1 mysqldata]$ mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15697279
Server version: 5.5.25a-log MySQL Release


Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql>


做完了,在OC通讯组里面跟大家汇报下,然后发email出去。今天休息,看来明天要好好查下,为什么100%了才报警。


在 `MyDb` 数据库创建 `t_student` 表添加外键约束时出现 `ERROR 1005 (HY000): Can't create table 'MyDb.t_student' (errno: 150)`,可能有以下几种原因及解决方法: ### 外键名或字段名错误 外键的名字不是字段名,若外键名或字段名写错会导致该错误。需确保在创建外键约束时,外键名、引用的字段名和表名都是正确的。例如,正确的创建表语句如下: ```sql CREATE DATABASE MyDb; USE MyDb; CREATE TABLE t_class ( id INT PRIMARY KEY, name VARCHAR(22) ); CREATE TABLE t_student ( id INT PRIMARY KEY, name VARCHAR(22), classId INT, CONSTRAINT fk_stu_class1 FOREIGN KEY (classId) REFERENCES t_class(id) ); ``` ### 表文件问题 如果之前删的是有数据的表文件,直接创建表不管用。需先执行 `DROP TABLE` 语句删除表,然后再重新创建该表。示例代码如下: ```sql DROP TABLE IF EXISTS t_student; DROP TABLE IF EXISTS t_class; CREATE TABLE t_class ( id INT PRIMARY KEY, name VARCHAR(22) ); CREATE TABLE t_student ( id INT PRIMARY KEY, name VARCHAR(22), classId INT, CONSTRAINT fk_stu_class1 FOREIGN KEY (classId) REFERENCES t_class(id) ); ``` ### 数据类型不匹配 外键字段和被引用字段的数据类型必须一致。要保证 `t_student` 表的 `classId` 字段和 `t_class` 表的 `id` 字段数据类型相同。 ### 字符集和排序规则不一致 表的字符集和排序规则不一致也可能导致该错误。创建表时,可指定统一的字符集和排序规则,示例如下: ```sql CREATE DATABASE MyDb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE MyDb; CREATE TABLE t_class ( id INT PRIMARY KEY, name VARCHAR(22) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE t_student ( id INT PRIMARY KEY, name VARCHAR(22), classId INT, CONSTRAINT fk_stu_class1 FOREIGN KEY (classId) REFERENCES t_class(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值