【问题标题】:Get a Sql Server error on Order By - Symfony2按顺序获取 Sql Server 错误 - Symfony2
【发布时间】:2014-12-02 19:17:28
【问题描述】:

将 Symfony 与 Sql Server 一起使用,根据我的阅读,与数据库的连接似乎不稳定。

一旦我使用 orderBy 方法,我就会得到一个错误:

这是一个例子:

  $qStores =
        $this->getManager()
             ->createQueryBuilder()
             ->select('rpdv')
             ->from('MainBundle:PointDeVenteReference', 'rpdv')
             ->andWhere( 'rpdv.partenaireClient = :id_partner ' )
                 ->setParameter( 'id_partner', $this->getUser()->getPartenaire()->getIdPartenaire() )
             ->orderBy( 'rpdv.idPointDeVenteReference' , 'DESC' )
             ->setFirstResult( 0 )
             ->setMaxResults( 30 );

  $stores = new Paginator( $qStores, FALSE );

还有错误:

An exception has been thrown during the rendering of a template ("An exception occurred while executing
'SELECT DISTINCT TOP 30 id_point_de_vente_reference0 
 FROM ( SELECT p0_.id_point_de_vente_reference AS id_point_de_vente_reference0, 
               p0_.reference AS reference1, 
               p0_.date_derniere_modification AS date_derniere_modification2, 
               p0_.blocage AS blocage3 
        FROM point_de_vente_reference p0_ 
        WHERE p0_.id_partenaire_client = ? 
        ORDER BY p0_.id_point_de_vente_reference DESC ) dctrn_result 
 ORDER BY id_point_de_vente_reference0 DESC' 
 with params [2829]:SQLSTATE[42000]: 
 [Microsoft][SQL Server Native Client 11.0][SQL Server]
 The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, 
 unless TOP, OFFSET or FOR XML is also specified.") in MainBundle:Default:store/list.html.twig at line 79.

我试图用网上找到的更正来更改类 SQLServerPlatform,但没有成功。

你有什么想法吗?

谢谢!

编辑:

此错误似乎与第二个参数为 true 的分页器有关。传给false,我没有错误

【问题讨论】:

  • 嗯,你读过异常吗?它显然表明您在错误的上下文中使用ORDER BYORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified
  • 好的,但是这个查询是由教义生成的。我的第一段代码对我来说似乎是正确的......
  • 好吧,代码可能是正确的,但是您使用的底层存储似乎不允许排序。
  • “底层存储”是什么意思? SQL server 很高兴地接受了“Order by”。问题似乎在于该学说构建了一个错误的查询。
  • 您不能将ORDER BY 与视图、派生表、子查询等一起使用。这是您的SQL 服务器返回的错误。你试过追查它的起源吗?

标签: sql-server symfony doctrine dbal


【解决方案1】:

dctrn_result 是派生表。从错误消息中,您不能使用 order by。我不知道symfony2,但是去数据库引擎的代码是无效的。

  • Craftydba

【讨论】:

    猜你喜欢
    • 2012-01-18
    • 1970-01-01
    • 2013-09-13
    • 2021-04-20
    • 2014-08-16
    • 1970-01-01
    • 2016-10-03
    • 2016-11-12
    • 1970-01-01
    相关资源
    最近更新 更多