MySQL VIEW表的错误密钥文件尝试修复它

时间:2016-02-24 17:15:01

标签: mysql view

我有一个FooBar视图,如:

CREATE VIEW `FooBar` AS 
SELECT * FROM `Foo`.`Bar`
UNION ALL 
SELECT * FROM `Foo1`.`Bar`

当我SELECT * FROM FooBar时,我得到了:

  

表' /tmp/#sql_1234_5.MYI' ;;的密钥文件不正确尝试修复它

当我运行这样的select语句时:

SELECT * FROM `Foo`.`Bar`
UNION ALL 
SELECT * FROM `Foo1`.`Bar`

一切顺利。我的FooBar视图显然存在问题。

当我REPAIR TABLE FooBar时,我

  

' WhiskerDatabase.VisualDiscrimSuperimposed_Results'不是BASE TABLE

     

损坏

我尝试DROP VIEW FooBar并重新CREATE VIEW FooBar ......但问题仍然存在。

我找不到/var/lib/mysql/MyDB/中的sql_1234_5.MYI文件。

1 个答案:

答案 0 :(得分:0)

找到解释here。 MySQL构建一个临时文件。临时文件太大,无法容纳在内存中。

调整系统内存或使用DROP TABLE `FooBar` IF EXISTS; CREATE TABLE `FooBar` AS SELECT * FROM `Foo`.`Bar`; INSERT INTO `FooBar` SELECT * FROM `Foo1`.`Bar`; 子句可以帮助解决问题。

我通过创建一个创建表而不是视图的过程来解决我的问题。如:

@{

    foreach (var article in ViewBag.DisplayPosts)
    {
        <a class="ArticleLink" href="@Url.Action("SinglePost", "Post", article.Id)">@article.Title</a>
        <p>@article.CreatedOn</p>
        <br/>
    }       
}