linux系统,执行insert 语句插入数据,数据盘写满后,再执行insert 语句,insert 无法完成,一直停着,有什么办法能够立刻返回一个错误呢?谢谢!

解决方案 »

  1.   

    我有个mysql数据库,数据文件在一个只有2g的U盘上,有一个程序会往盘上写数据,运行了一段时间后,发现再也无法写入数据了,df一下发现u盘没有空间了,然后调试程序,发现卡在insert语句处,也不返回错误,这样导致程序的其他操作也无法进行。
    为什么会卡在insert语句处,写满了返回一个错误也好,但是就是不返回,不知道是设置的问题还是其他的问题。代码用C++写的,用的是mysql提供的C连接。
      

  2.   

    不会啊如果是磁盘空间,或文件分配的QUOTA没了,MYSQL会报错的啊。你可以检查一下MYSQL的错误日志中有没有这个出错信息。如果MYSQL的错误日志中有信息,则要看你的C代码,是否得到了MYSQL的返回 的错误信息。
      

  3.   

    您好,我看了下日志,一直在打印这个东东
    100705  6:12:22 [ERROR] /cf/workdir/mysql-5.1.41/libexec/mysqld: Disk is full writing './AssistDB/DATA.MYD' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space)
    100705  6:12:22 [ERROR] /cf/workdir/mysql-5.1.41/libexec/mysqld: Retry in 60 secs. Message reprinted in 600 secs
    100705  6:22:22 [ERROR] /cf/workdir/mysql-5.1.41/libexec/mysqld: Retry in 60 secs. Message reprinted in 600 secs然后就卡在insert上,也不返回,使用的是mysql_real_query执行的insert 语句
      

  4.   

    显然MYSQL服务器已经扫描到错误,这样可能是你C代码的问题了。