【问题标题】:OFFSET error with symfony project and MS SQL backendsymfony 项目和 MS SQL 后端的 OFFSET 错误
【发布时间】:2011-04-26 21:12:04
【问题描述】:

我正在构建一个带有 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 上运行。

【问题讨论】:

    标签: sql-server symfony1


    【解决方案1】:

    在我的情况下,通过显式设置寻呼机大小,错误消失了:

    list:
        max_per_page: 20
    

    编辑:那不是解决方案,我只是在会话中有一些排序参数暂时解决了问题。

    新的解决方案是定义一个默认排序。我通过覆盖索引操作来做到这一点:

    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')

    而不是

    $request->getParameter('sort')

    【讨论】:

      【解决方案2】:

      根据我对 Doctrine API 的了解,它应该支持此功能,但对于某些版本的 MS SQL 可能会被破坏。不幸的是,我再也没有 MS SQL 可以试验了。

      如果您完全不用分页也可以相处,解决方法可能是通过设置禁用它

        list:
          max_per_page: false 
      

      在您的 generator.yml 文件中使用管理员的模块。

      【讨论】:

      • 很遗憾有足够的数据需要分页。
      【解决方案3】:

      我刚刚遇到了这个(或类似的)问题。我收到了那个错误消息,我把它缩小到 Symfony 中的分页问题。如果我从组件操作中取出分页的东西,我可以通过它。

      结果非常简单:只需订购主查询(即应用寻呼机的查询)。就我而言,它添加了以下内容:

      ->orderBy('i.created_at DESC')
      

      希望这对某人有所帮助。

      【讨论】:

      • 好的,从技术上讲,这个问题存在于 MS SQL 中,但 IMO 的抽象层应该解决这个问题。
      【解决方案4】:

      仅供参考。后端管理员生成器分页使用 OFFSET n 卡在某些页面上;在学说查询结束时。解决方法是清除 SESSION COOKIES。

      我一直在后端得到空白页。我分析了我的 mysql 查询,发现每个查询都添加了 OFFSET 60。这发生在我从数据库表中删除所有记录之后。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-05
        • 2013-02-01
        • 1970-01-01
        • 2016-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多