Show create view viewName不能正确显示格式的文本。如何获得正确格式的SQL?
例如,我创建了一个类似于create view v1 as select * from mysql.uer的视图,但它的返回方式如下:
CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER
VIEW v1 AS
select
mysql.user.Host AS Host,
mysql.user.User AS User,
mysql.user.
MySql创建视图:
CREATE VIEW Foo as
select type from (select 8 as type UNION ALL select 9 as type) types;
windows上的MySQL5.7.11:工作,但MySql 5.6.25-0ubuntu0.15.04.1 (Ubuntu):不工作。
View's SELECT contains a subquery in the FROM clause
这是从5.6到5.7的变化吗?我试图在Ubuntu上将mysql升级到5.7,但在Ubuntu上不可用。有什么建议吗?谢谢。
编辑:示例是一个测试
我有一个连接到MySQL DB的spring boot应用程序,并且我已经能够使用这些表,但现在我创建了一个模型、存储库和服务来访问视图。我在控制器中创建了一个处理此视图的路由,并收到以下错误消息: java.sql.SQLException: The user specified as a definer ('root'@'%') does not exist 在MySQL工作台中,当我查看视图时,它看起来如下所示: CREATE
ALGORITHM = UNDEFINED
DEFINER = `root`@`%`
SQL SE
环境: Ubuntu 11.10,MySQL 5.1.58
我有一个带有视图的小型数据库。当我尝试转储和恢复时,我得到
ERROR 1356 (HY000) at line 1693: View 'curation2.condition_reference_qrm_v' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
但是,我可以连接到部分恢复的数据库并自己创建视图。因此,我怀疑错误消息是由与视图本身无关的问题引起
我想加入一个视图的表,其中一个表L是本地的,而视图F是驻留在另一个服务器上的FEDERATED视图:
SELECT * FROM L LEFT JOIN F ON L.id = F.id;
现在,尽管表和视图之间实际上有许多匹配,但JOIN没有命中。ID字段是bigint。
令人沮丧的是,我创建了一个TEMPORARY表T,并将所有东西从F转储到它中,从而生成了F的本地副本。使用T而不是F,连接按预期工作。但是创建T的过程消耗了内存和时间。
出现这种奇怪的MySQL行为的可能原因是什么?
表定义:
CREATE TABLE `L` (
`id` bigint(20) NOT NULL,
在MySQL中,保存以下视图之后:
CREATE VIEW MyView AS SELECT * FROM MyTable;
如果我编辑MyView,则asterix将消失,并且SQL包含所有字段名。例如:
ALTER VIEW MyView AS SELECT field1, field2 FROM MyTable;
当MyTable添加了新字段时,我希望视图输出也显示这些新字段。如何防止asterix被文字列名所替代?
我希望在MySQL中创建一个视图,以便数据分析用户能够轻松地过滤大量数据,但是当我创建一个具有任何分组的视图时,整个视图都会被扫描,使得该视图在性能上毫无用处。
一个简单的例子
值表-约35亿行,每月分区
SELECT
Timestamp,
DeviceId,
SUM(Entry)
FROM Value v
WHERE DeviceId = 123456 AND Timestamp >= '2020-08-01'AND Timestamp <= '2020-08-30'
GROUP BY Timesta
我做了很多MySQL的工作,但没有用视图。我想做的在概念上很简单。有两个表,创建一个组合它们的视图,并将/update/delete像表一样插入到视图中。类似于:
示例:
CREATE TABLE IF NOT EXISTS `baseuser` (
`id` int(11) NOT NULL,
`uname` varchar(55) NOT NULL,
`pwd` varchar(55) NOT NULL
) ENGINE=InnoDB ;
CREATE TABLE IF NOT EXISTS `facultydet` (
`id` int(11) NOT
有没有一种连接两个表的方法,所以当我修改基表时,视图也会改变吗?就像这样:
CREATE TABLE t (qty INT, price INT);
INSERT INTO t VALUES(3, 50);
CREATE VIEW v AS SELECT * FROM t;
SELECT * FROM v;
+------+-------+
| qty | price |
+------+-------+
| 3 | 50 |
+------+-------+
ALTER TABLE t ADD COLUMN comm INT;
SELECT * FROM t;
+--
我不知道这是怎么回事。我已经创建了一个MySQL视图,并从4个不同的表中获取一些数据,但它似乎只返回了第一条记录。
CREATE OR REPLACE VIEW request_view AS
SELECT
TRequest.id,
TRequest.minutes_required,
TRequest.expires_at,
User.name AS author,
TRequest.abstract_text,
TRequest.full_text,
TGroup.name AS tgroup,
SUM(TOrder.mi
我使用mysqldump在特定计算机上的帐户之间复制数据库。一切都很好,除了当我们到达我们定义的视图时。因为转储包括如下一行..。
/*!50013 DEFINER=`user_a`@`localhost` SQL SECURITY DEFINER */
..。当在user_b上将转储加载到mysql中时,我们会收到一个错误:
ERROR 1227 (42000) at line 657: Access denied; you need the SUPER privilege for this operation
不用说,我在这个mysql实例上没有超级特权。有没有办法说服mysqldump以