当我创建一个包含用户定义函数的 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_57575_dbname
(在我的托管服务提供商处)的新服务器上,我会得到该函数dbname.formatFullEmail
不存在的不可避免的错误。
我正在使用mysqldump
(to dump) 和mysql
(to re-load) -- 除了这些不可变的前缀之外,加载到不同名称的数据库中没有任何问题。
我的解决方法是grep
使用转储文件替换数据库名称,但是我是否缺少在某处省略架构前缀的选项?