2

当我创建一个包含用户定义函数的 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`;

如果我随后尝试编写脚本并将此视图加载到数据库名称不是dbnameaccount_57575_dbname(在我的托管服务提供商处)的新服务器上,我会得到该函数dbname.formatFullEmail不存在的不可避免的错误。

我正在使用mysqldump(to dump) 和mysql(to re-load) -- 除了这些不可变的前缀之外,加载到不同名称的数据库中没有任何问题。

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

4

0 回答 0