我有一个查询,我正在使用Laravel运行,它在我的开发主机上运行得很好,但是当我将其部署到UAT主机时出现错误。我简化了所有示例,以便更轻松地了解正在发生的事情。
简化代码:
DB::select("SELECT c.*
FROM (SELECT 0 AS xxx, u.* FROM users u) c
ORDER BY c.xxx DESC");
错误:
SQLSTATE [42S22]:找不到列:1054'order子句'中的未知列'c.xxx'(SQL:SELECT c。* FROM(选择0 AS xxx,u。* FROM users u)c ORDER BY c.xxx DESC)
当我直接在Workbench中运行以下查询时,它绝对可以正常运行:
SELECT c.*
FROM (SELECT 0 AS xxx,
u.*
FROM users u) c
ORDER BY c.xxx DESC
因此,简而言之,它可以直接在dev DB上工作,可以在dev代码内工作,可以直接在UAT DB上工作,但是在UAT应用程序上失败。
有什么想法为什么数据库查询的行为可能与通过Laravel / php运行的查询有所不同?知道为什么一台机器运行良好,而另一台显示上述错误吗?