Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用不带模式/数据库前缀的函数存储mysql视图_Mysql_Mysqldump - Fatal编程技术网

使用不带模式/数据库前缀的函数存储mysql视图

使用不带模式/数据库前缀的函数存储mysql视图,mysql,mysqldump,Mysql,Mysqldump,当我创建一个包含用户定义函数的MySql(5.0、5.1、5.5)视图时,存储的查询文本会自动包含数据库名称的前缀: CREATE DEFINER = 'username'@'%' VIEW dbname.NamesAndEmails AS SELECT `a`.`Name` AS `Name`, `dbname`.`formatFullEmail`(`a`.`Name`, `a`.`Email`) FROM `MyTable` AS `a`; 如果我随后尝试编写脚本并将此视图加载到一个新服

当我创建一个包含用户定义函数的MySql(5.0、5.1、5.5)视图时,存储的查询文本会自动包含数据库名称的前缀:

CREATE DEFINER = 'username'@'%'
VIEW dbname.NamesAndEmails
AS
SELECT `a`.`Name` AS `Name`, 
`dbname`.`formatFullEmail`(`a`.`Name`, `a`.`Email`)
FROM `MyTable` AS `a`;
如果我随后尝试编写脚本并将此视图加载到一个新服务器上,其中数据库名称不是
dbname
,而是
account\u 5757575\u dbname
(在我的托管提供商处),我将不可避免地遇到一个错误,即函数
dbname.formatFullEmail
不存在

我使用的是
mysqldump
(转储)和
mysql
(重新加载)--除了这些不可变的前缀之外,加载到不同名称的数据库没有任何问题


我的解决方法是
grep
转储文件以替换数据库名称,但我是否缺少在某处省略架构前缀的选项?

问题是,函数不是特定于架构的,因此包含的查询需要FQN。不知道是否有解决方法或选项。如何将本地模式命名为与服务器模式相同的模式?您不能说视图也不是特定于模式的吗?如果我使用非限定视图名称,服务器会假定我指的是当前数据库中的视图。执行
selectfunctionname(parameter)
执行相同的操作——假设当前模式。