当我创建包含用户定义函数的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
(在我的托管服务提供商处)的新服务器上,我会得到函数{不可避免的错误} {1}}不存在。
我正在使用mysqldump
(转储)和mysql
(重新加载) - 除了这些不可变的前缀之外,加载到不同名称的数据库中没有任何问题。< / p>
我的解决方法是grep
转储文件替换数据库名称,但是我错过了在某处省略模式前缀的选项吗?