当 table 为空时,Mysql 查看 return 数据

Mysql views return data when table empty

我在使用 mysql 时遇到了一个奇怪的问题。我正在 C# 上开发一个可视化应用程序,它将数据存储到数据库中。以前我对数据库使用 SQL,但我的客户改变了主意 mysql。所以我在 mysql 上重新创建了相同的模式。现在发生了一件非常奇怪的事情:我的表完全是空的,但是当我执行视图时,它们 return 我从旧的 SQL 表中返回数据,当我直接从它们出现的表中读取时空的。我用来连接的用户不同,最奇怪的是,即使我在 mysql workbench 上执行视图时也会发生这种情况。我什至截断了 mysql 中的表格,但还是一样。有谁知道可能导致这种异常的原因以及如何解决它?

p.s。 Workbench 版本 6.2; Sql 版本 SQL 服务器 2014

此致。

在 MySQL 中,视图是基于 SQL 语句的结果集的虚拟 table。 它包含行和列,就像数据库中的真实 table 一样。视图中的字段是来自数据库中一个或多个真实 table 的字段。

当您执行视图时,它们 return 从旧的 SQL table 返回数据。这是因为您的视图仍然包含您 运行 前一段时间的数据。您忘记在每次执行时删除您的视图。要删除 MySQL 视图,试试这个:

DROP VIEW view_name

视图不包含任何类型的数据——物化视图除外,MySQL 不包含这些数据。如果每次在 table 上执行 DML 语句时都必须删除并重新创建视图,那么视图将完全无用。

视图唯一可以 return 数据是当一个进程更改视图中使用的 table 的内容并且视图是在第一个进程提交更改之前由另一个进程查询。您尚未指定如何更改 table 以及如何查询它们。您也没有包括 create view 声明。您很可能会使用与您想象的不同的 table。如果 table 被疯狂地拍打,这可能会在数据库的初始设计过程中发生。