2014-10-19 71 views
0

我有一个数据库,其中填充了来自体育赛事的结果。几天前,我意识到结果并没有被写下来。我在Ubuntu Linux 64位上使用MySQL 5.6.14。MySQL数据库已满?

到目前为止我试过下列步骤操作:

  1. 检查所有的日志,我能找到。任何日志文件中都没有错误。

  2. 状态中最大的表的:

 
mysql> show table status like 'results'; 
+---------+--------+---------+------------+---------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+ 
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time   | Update_time | Check_time | Collation   | Checksum | Create_options | Comment | 
+---------+--------+---------+------------+---------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+ 
| results | InnoDB |  10 | Compact | 1774207 |   222 | 394149888 |    0 | 218644480 | 28311552 |   NULL | 2014-07-03 21:40:39 | NULL  | NULL  | latin1_swedish_ci |  NULL |    |   | 
+---------+--------+---------+------------+---------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+ 
1 row in set (0.00 sec) 
  • 为最大表的行数:
  •  
    mysql> select count(*) from results; 
    +----------+ 
    | count(*) | 
    +----------+ 
    | 1763471 | 
    +----------+ 
    1 row in set (0.89 sec) 
    
  • 试图找到我超过但没有找到任何限制。
  • 关于我能做什么的任何想法?

    +0

    什么,当你执行'手动insert'发生什么呢? – 2014-10-19 19:55:52

    +0

    结果如何在数据库中结束?例如,如果它通过HTTP请求,请求是否仍然有效?如果是PHP,请打开所有错误报告并查看是否显示了某些内容。如果没有显示出来,请从您的脚本中复制插入查询并尝试在数据库上执行它并查看会发生什么。 – vrijdenker 2014-10-19 19:56:44

    +0

    我试过一些手动插入。他们进展顺利。但后来我测试了一个事件的结果。那是470行。只有100左右被插入。这让我怀疑可能会有一些我已经达到的限制。 – 2014-10-19 20:00:39

    回答

    0

    Mysql具有表格文件的最大大小。 你在这里找到:

    Mysql

    一个表最多可包含1000列。

    InnoDB内部最大密钥长度为3500字节,但MySQL本身将其限制为3072字节。 (对于MySQL 5.0.17之前的非64位版本,以及对于5.0.15之前的所有版本,1024字节)。

    单列索引的索引键最多可达767个字节。相同的长度限制适用于任何索引键前缀。请参见第13.1.8节“CREATE INDEX语法”。

    除变长列(VARBINARY,VARCHAR,BLOB和TEXT)外,最大行长度略小于数据库页面的一半。也就是说,最大行长度大约是8000字节。 LONGBLOB和LONGTEXT列必须小于4GB,并且总行长度(包括BLOB和TEXT列)必须小于4GB。

    如果一行长度不足半页,则它全部存储在本地页面内。如果超过半页,则可以选择可变长度的列用于外部页外存储,直到该行适合半页内为止,如第14.2.10.2节“文件空间管理”中所述。

    尽管InnoDB支持行内部尺寸大于65535个字节时,MySQL本身规定的65,535行大小限制所有列的总大小:

    +0

    丹尼斯请为您的答案添加更多详细信息与链接的问题只有答案是,他们可能会失效,如果链接被删除。 – Namphibian 2014-10-19 20:17:34