如何在MySQL Workbench中编辑视图,而不在使用的表/视图中自动添加数据库名称前缀
创建视图时,我会在默认数据库的上下文中创建它。所以,我对表的引用中没有一个前缀可以显式指定数据库。但是,当我在Workbench中编辑视图时,它会自动添加数据库前缀 我不需要数据库前缀,因为当我用不同的名称还原数据库时,会导致还原失败 这是否可以停止视图编辑中的前缀,或者有其他方法来解决恢复问题 问候,如何在MySQL Workbench中编辑视图,而不在使用的表/视图中自动添加数据库名称前缀,mysql,database,mysql-workbench,Mysql,Database,Mysql Workbench,创建视图时,我会在默认数据库的上下文中创建它。所以,我对表的引用中没有一个前缀可以显式指定数据库。但是,当我在Workbench中编辑视图时,它会自动添加数据库前缀 我不需要数据库前缀,因为当我用不同的名称还原数据库时,会导致还原失败 这是否可以停止视图编辑中的前缀,或者有其他方法来解决恢复问题 问候, 鲍比那是不可能的。视图存储在特定的数据库中,而不是存储在“高于”所有数据库的某些空间中。考虑以下……/P> use playground_a; /*or whatever database*/
鲍比那是不可能的。视图存储在特定的数据库中,而不是存储在“高于”所有数据库的某些空间中。考虑以下……/P>
use playground_a; /*or whatever database*/
create view view_whatever as
select * from table_whatever;
use playground_b;
select * from view_whatever; /*here you will get an error that view_whatever does not exist*/
select * from playground_a.view_whatever; /*this works*/
这就是为什么视图定义中总是有数据库前缀
我看到的唯一可能性是使用一个以数据库名称作为参数的存储过程。在这个过程中,您将使用一个准备好的语句来执行查询和数据库名称参数的一个具体字符串。当然,这也有缺点,例如,您无法轻松添加where子句。创建视图而不明确指定模式是一种方便的功能。在幕后,视图仍保存在特定模式中(本例中为默认模式)。编辑源代码时,从服务器检索源代码,服务器返回真实代码(包括模式限定)。因此,当您发送视图代码时,关联已经发生,以后无法再次删除。好的,如果在编辑视图时无法避免架构前缀,那么在将数据库a还原为数据库b时,如何避免视图上的还原错误 下面是我用来创建备份的命令
mysqldump -u xxxxxx -pxxxxxx --routines database_a | gzip -9 > $FULLGZIPPATH
谢谢。请参阅
mysql 8.0.3或更高版本已经修复