Php 未调用自定义函数的原始SQL
在使用原始SQL时,从Doctrine调用数据库中的自定义函数时遇到问题 下面是一个正在运行的SQL查询示例Php 未调用自定义函数的原始SQL,php,mysql,symfony,doctrine-orm,Php,Mysql,Symfony,Doctrine Orm,在使用原始SQL时,从Doctrine调用数据库中的自定义函数时遇到问题 下面是一个正在运行的SQL查询示例 SELECT unicodeDecoder(answer) from answers; unicodeDecoder是我数据库中自定义的函数,当我直接在数据库上运行SQL语句时,它运行得非常好 但是,当我使用原始sql运行查询时,如下所示: $sql = "SELECT unicodeDecoder(answer) from answers"; $stmt = $this->g
SELECT unicodeDecoder(answer) from answers;
unicodeDecoder
是我数据库中自定义的函数,当我直接在数据库上运行SQL语句时,它运行得非常好
但是,当我使用原始sql运行查询时,如下所示:
$sql = "SELECT unicodeDecoder(answer) from answers";
$stmt = $this->getEntitityManager()->getConnection()->prepare($sql);
$stmt->execute();
我得到以下错误:
SQLSTATE[42000]: Syntax error or access violation: 1305 FUNCTION unicodeDecoder does not exist
使用自定义函数时是否需要创建自定义ORM映射,或者这可能是某种形式的缓存问题
任何帮助都将不胜感激
提前感谢尝试在函数前面加上数据库名称:
$sql = "SELECT my_db.unicodeDecoder(answer) from answers";
如果发现问题。感谢@alex blex为我提供了开始寻找的地方 我的数据库在名称中有一个
:cms.app.com
问题是由
当条令试图访问该方法时,它会自动将数据库名称附加到开头
当我尝试将cms.app.com
添加到开头时(正如@alex blex所建议的),它创建了以下方法调用(这是错误的语法)
我尝试了以下方法
`cms.app.com`.unicodeDecoder,但这仍然解决了
cms.app.com.unicodeDecoder()
我从数据库名称中删除了
,现在它可以正常工作了
重要注意事项:请勿在数据库名称中使用
,因为Doctorine无法正确解析名称,因为`符号被去除。不幸的是,这不起作用。它只是抱怨有相同的错误,但是该方法现在在错误中以数据库名称作为前缀。检查您使用的是正确的用户(检查权限)嗨,Matteo,我使用的是正确的用户,因为所有其他查询都在正常工作。谢谢
cms.app.com.unicodeDecoder()