我正在使用MS SQL后端构建一个symfony 1.4项目。我使用管理生成器构建了一个后端,但是当我尝试加载管理模块时,我收到了这个错误:
OFFSET cannot be used in MS SQL without ORDER BY due to emulation reasons
如何解决此问题?
symfony应用程序在Apache 2.2下运行Debian squeeze。
答案 0 :(得分:1)
基于我对Doctrine API的一瞥,支持此功能是支持的,但某些版本的MS SQL可能会被破坏。不幸的是,我不再需要MS SQL来进行实验。
如果您可以在不进行分页的情况下相处,则可以通过设置
来解决此问题 list:
max_per_page: false
使用admin。的模块的generator.yml文件中的
答案 1 :(得分:1)
我刚遇到这个(或类似的)问题。我收到了该错误消息,并将其缩小到Symfony中的分页问题。如果我从组件操作中取出分页内容,我可以通过它。
答案结果非常简单:只需订购主查询(即寻呼机应用的查询)。在我的情况下,它添加了这个:
->orderBy('i.created_at DESC')
希望这有助于某人。
答案 2 :(得分:1)
只是一个FYI。后端管理生成器分页使用OFFSET n卡在某些页面上;在一个学说查询的最后。解决方案是清除SESSION COOKIES。
我不断在后端获取空白页面。我分析了我的mysql查询,看到OFFSET 60被添加到每个查询中。这是在我从数据库表中删除了所有记录之后发生的。
答案 3 :(得分:1)
在我的情况下,通过明确设置寻呼机大小错误消失了:
list:
max_per_page: 20
编辑:那不是解决方案,我只是在会话中有一些排序参数暂时解决了这个问题。
新解决方案是定义一个defalut排序。我是通过覆盖索引操作来完成的:
class organisationActions extends autoOrganisationActions
{
public function executeIndex(sfWebRequest $request)
{
// sorting
if ($request->getParameter('sort', 'created_at') && $this->isValidSortColumn($request->getParameter('sort', 'created_at')))
{
$this->setSort(array($request->getParameter('sort', 'created_at'), $request->getParameter('sort_type')));
}
// pager
if ($request->getParameter('page'))
{
$this->setPage($request->getParameter('page'));
}
$this->pager = $this->getPager();
$this->sort = $this->getSort();
}
}
$ request-> getParameter('sort','created_at')
而不是
$请求 - >的getParameter( '排序')