gpt4 book ai didi

mysql - 在 MySQL 中选择使用 `database_name` .`viewname` .* 语法会抛出 "Unknown table ' database_name.viewname'"

转载 作者:可可西里 更新时间:2023-11-01 08:09:00 24 4
gpt4 key购买 nike

我在 MySQL 和数据库 View 方面遇到了一个奇怪的问题。

我有一个这样定义的 View :

CREATE VIEW circuits AS
(SELECT Id, Id AS Old_Id, Name FROM circuits_1)
UNION
(SELECT Id + 1000 AS Id, Id AS Old_Id, Name FROM circuits_2)

我必须将此 View 与另一个数据库中的表连接起来。

为此,我通常在表名前加上它的数据库名,例如 db_name.table_name

我已经使用 ORM 映射了这个 View ,指定了它的前缀,结果查询是这个:

SELECT `webapp`.`circuits`.* FROM `webapp`.`circuits`

但是这个查询返回这个错误:

#1051 - Unknown table 'webapp.circuits'

但是,我尝试手动运行查询并删除 webappSELECT 语句的前缀,它按预期工作,完全没有错误

SELECT `circuits`.* FROM `webapp`.`circuits`

知道为什么会这样吗?

是否与 View 的定义方式有关?

编辑

另一个奇怪的事情:即使此查询失败:

SELECT `webapp`.`circuits`.* FROM `webapp`.`circuits`

这不是:

SELECT `webapp`.`circuits`.Id FROM `webapp`.`circuits`

最佳答案

我对回答犹豫不决,因为我对 mysql 不够熟悉,无法给出完整的答案。不过,我在 rextester.com 上做了一些测试,发现了以下内容:

如果我创建一个table test(id int),我可以使用它的完全限定对象名查询它:

SELECT rextester.test.* 
FROM rextester.test

工作,没问题。

如果我创建一个view so_test as (Select 1 id from dual)

我不能这样做:

SELECT rextester.so_test.* 
FROM rextester.so_test

返回与您得到的相同的错误。

我不能从中得出太多结论,因为我不太了解 mysql。但是,这似乎是 View 的普遍问题,而不是您创建它的方式。

关于mysql - 在 MySQL 中选择使用 `database_name` .`viewname` .* 语法会抛出 "Unknown table ' database_name.viewname'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51519196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com