View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
13634 | Bug reports | User / Groups / Roles | public | 2018-04-25 11:09 | 2018-05-25 11:30 |
Reporter | BZHNedr | Assigned To | DenisChenu | ||
Priority | none | Severity | feature | ||
Status | closed | Resolution | fixed | ||
Product Version | 3.7.x | ||||
Fixed in Version | 3.7.x | ||||
Summary | 13634: Internal Server Error CDbCommand failed to execute the SQL command: SQLSTATE [42000]: Syntax error or access violation: 1064 | ||||
Description | Hello, Internal Server Error Thinking that he did something wrong, I created a test account, through which I created the same user rights and got the same error message. | ||||
Steps To Reproduce |
| ||||
Additional Information | I can very well edit all users with my admin accounts | ||||
Tags | No tags attached. | ||||
Attached Files | |||||
Bug heat | 8 | ||||
Complete LimeSurvey version number (& build) | 3.7.0+180418 | ||||
I will donate to the project if issue is resolved | No | ||||
Browser | FireFox 52.4.1 (32bits) | ||||
Database type & version | MariaDB | ||||
Server OS (if known) | DEBIAN 8 | ||||
Webserver software & version (if known) | Apache 2.4 | ||||
PHP Version | 5.6 | ||||
Ok, Sorry to didn't put this in formum can you activate debug mode : http://manual.limesurvey.org/Debug_Mode just before “Click on the icon "Edit this user"” And then you can directly upload the HTML file produced. We have the file where this error happen and the line :) |
|
Hello, CDbException.htm (22,644 bytes)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>CDbException</title> <style type="text/css"> /*<![CDATA[*/ html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;margin:0;padding:0;} body{line-height:1;} ol,ul{list-style:none;} blockquote,q{quotes:none;} blockquote:before,blockquote:after,q:before,q:after{content:none;} :focus{outline:0;} ins{text-decoration:none;} del{text-decoration:line-through;} table{border-collapse:collapse;border-spacing:0;} body { font: normal 9pt "Verdana"; color: #000; background: #fff; } h1 { font: normal 18pt "Verdana"; color: #f00; margin-bottom: .5em; } h2 { font: normal 14pt "Verdana"; color: #800000; margin-bottom: .5em; } h3 { font: bold 11pt "Verdana"; } pre { font: normal 11pt Menlo, Consolas, "Lucida Console", Monospace; } pre span.error { display: block; background: #fce3e3; } pre span.ln { color: #999; padding-right: 0.5em; border-right: 1px solid #ccc; } pre span.error-ln { font-weight: bold; } .container { margin: 1em 4em; } .version { color: gray; font-size: 8pt; border-top: 1px solid #aaa; padding-top: 1em; margin-bottom: 1em; } .message { color: #000; padding: 1em; font-size: 11pt; background: #f3f3f3; -webkit-border-radius: 10px; -moz-border-radius: 10px; border-radius: 10px; margin-bottom: 1em; line-height: 160%; } .source { margin-bottom: 1em; } .code pre { background-color: #ffe; margin: 0.5em 0; padding: 0.5em; line-height: 125%; border: 1px solid #eee; } .source .file { margin-bottom: 1em; font-weight: bold; } .traces { margin: 2em 0; } .trace { margin: 0.5em 0; padding: 0.5em; } .trace.app { border: 1px dashed #c00; } .trace .number { text-align: right; width: 2em; padding: 0.5em; } .trace .content { padding: 0.5em; } .trace .plus, .trace .minus { display:inline; vertical-align:middle; text-align:center; border:1px solid #000; color:#000; font-size:10px; line-height:10px; margin:0; padding:0 1px; width:10px; height:10px; } .trace.collapsed .minus, .trace.expanded .plus, .trace.collapsed pre { display: none; } .trace-file { cursor: pointer; padding: 0.2em; } .trace-file:hover { background: #f0ffff; } /*]]>*/ </style> </head> <body> <div class="container"> <h1>CDbException</h1> <p class="message"> CDbCommand n'a pas pu exécuter la commande SQL: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1. The SQL statement executed was: SELECT COUNT(*) FROM `lime_users` `t` WHERE uid=:uid AND parent_id=:parent_id) </p> <div class="source"> <p class="file">/var/www/sondagesen/htmlpublic/framework/db/CDbCommand.php(543)</p> <div class="code"><pre><span class="ln">531</span> { <span class="ln">532</span> if($this->_connection->enableProfiling) <span class="ln">533</span> Yii::endProfile('system.db.CDbCommand.query('.$this->getText().$par.')','system.db.CDbCommand.query'); <span class="ln">534</span> <span class="ln">535</span> $errorInfo=$e instanceof PDOException ? $e->errorInfo : null; <span class="ln">536</span> $message=$e->getMessage(); <span class="ln">537</span> Yii::log(Yii::t('yii','CDbCommand::{method}() failed: {error}. The SQL statement executed was: {sql}.', <span class="ln">538</span> array('{method}'=>$method, '{error}'=>$message, '{sql}'=>$this->getText().$par)),CLogger::LEVEL_ERROR,'system.db.CDbCommand'); <span class="ln">539</span> <span class="ln">540</span> if(YII_DEBUG) <span class="ln">541</span> $message.='. The SQL statement executed was: '.$this->getText().$par; <span class="ln">542</span> <span class="error"><span class="ln error-ln">543</span> throw new CDbException(Yii::t('yii','CDbCommand failed to execute the SQL statement: {error}', </span><span class="ln">544</span> array('{error}'=>$message)),(int)$e->getCode(),$errorInfo); <span class="ln">545</span> } <span class="ln">546</span> } <span class="ln">547</span> <span class="ln">548</span> /** <span class="ln">549</span> * Builds a SQL SELECT statement from the given query specification. <span class="ln">550</span> * @param array $query the query specification in name-value pairs. The following <span class="ln">551</span> * query options are supported: {@link select}, {@link distinct}, {@link from}, <span class="ln">552</span> * {@link where}, {@link join}, {@link group}, {@link having}, {@link order}, <span class="ln">553</span> * {@link limit}, {@link offset} and {@link union}. <span class="ln">554</span> * @throws CDbException if "from" key is not present in given query parameter <span class="ln">555</span> * @return string the SQL statement </pre></div> </div> <div class="traces"> <h2>Stack Trace</h2> <table style="width:100%;"> <tbody><tr class="trace core collapsed"> <td class="number"> #0 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /var/www/sondagesen/htmlpublic/framework/db/CDbCommand.php(433): <strong>CDbCommand</strong>-><strong>queryInternal</strong>("fetchColumn", 0, array()) </div> <div class="code"><pre><span class="ln">428</span> * @return mixed the value of the first column in the first row of the query result. False is returned if there is no value. <span class="ln">429</span> * @throws CException execution failed <span class="ln">430</span> */ <span class="ln">431</span> public function queryScalar($params=array()) <span class="ln">432</span> { <span class="error"><span class="ln error-ln">433</span> $result=$this->queryInternal('fetchColumn',0,$params); </span><span class="ln">434</span> if(is_resource($result) && get_resource_type($result)==='stream') <span class="ln">435</span> return stream_get_contents($result); <span class="ln">436</span> else <span class="ln">437</span> return $result; <span class="ln">438</span> } </pre></div> </td> </tr> <tr class="trace core collapsed"> <td class="number"> #1 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /var/www/sondagesen/htmlpublic/framework/db/ar/CActiveRecord.php(1609): <strong>CDbCommand</strong>-><strong>queryScalar</strong>() </div> <div class="code"><pre><span class="ln">1604</span> $builder=$this->getCommandBuilder(); <span class="ln">1605</span> $criteria=$builder->createCriteria($condition,$params); <span class="ln">1606</span> $this->applyScopes($criteria); <span class="ln">1607</span> <span class="ln">1608</span> if(empty($criteria->with)) <span class="error"><span class="ln error-ln">1609</span> return $builder->createCountCommand($this->getTableSchema(),$criteria)->queryScalar(); </span><span class="ln">1610</span> else <span class="ln">1611</span> { <span class="ln">1612</span> $finder=$this->getActiveFinder($criteria->with); <span class="ln">1613</span> return $finder->count($criteria); <span class="ln">1614</span> } </pre></div> </td> </tr> <tr class="trace app expanded"> <td class="number"> #2 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /var/www/sondagesen/htmlpublic/application/controllers/admin/useraction.php(324): <strong>CActiveRecord</strong>-><strong>count</strong>("uid=:uid AND parent_id=:parent_id)", array(":uid" => 17, "parent_id" => 16)) </div> <div class="code"><pre><span class="ln">319</span> if (Yii::app()->request->getParam('uid') != '') { <span class="ln">320</span> $postuserid = (int) Yii::app()->request->getParam("uid"); <span class="ln">321</span> if ( <span class="ln">322</span> Permission::model()->hasGlobalPermission('superadmin', 'read') // Super admin have all right on user <span class="ln">323</span> || Yii::app()->session['loginID'] == $postuserid // User can edit himself <span class="error"><span class="ln error-ln">324</span> || (Permission::model()->hasGlobalPermission('users', 'update') && User::model()->count("uid=:uid AND parent_id=:parent_id)", array(':uid' => $postuserid, 'parent_id' => Yii::app()->session['loginID']))) // User with users update can only update own Users </span><span class="ln">325</span> ) { <span class="ln">326</span> $oUser = User::model()->findByPk($postuserid); <span class="ln">327</span> $aData = array(); <span class="ln">328</span> $aData['oUser'] = $oUser; <span class="ln">329</span> </pre></div> </td> </tr> <tr class="trace core collapsed"> <td class="number"> #3 </td> <td class="content"> <div class="trace-file"> unknown(0): <strong>UserAction</strong>-><strong>modifyuser</strong>() </div> </td> </tr> <tr class="trace core collapsed"> <td class="number"> #4 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /var/www/sondagesen/htmlpublic/framework/web/actions/CAction.php(109): <strong>ReflectionMethod</strong>-><strong>invokeArgs</strong>(UserAction, array()) </div> <div class="code"><pre><span class="ln">104</span> elseif($param->isDefaultValueAvailable()) <span class="ln">105</span> $ps[]=$param->getDefaultValue(); <span class="ln">106</span> else <span class="ln">107</span> return false; <span class="ln">108</span> } <span class="error"><span class="ln error-ln">109</span> $method->invokeArgs($object,$ps); </span><span class="ln">110</span> return true; <span class="ln">111</span> } <span class="ln">112</span> } </pre></div> </td> </tr> <tr class="trace app expanded"> <td class="number"> #5 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /var/www/sondagesen/htmlpublic/application/core/Survey_Common_Action.php(83): <strong>CAction</strong>-><strong>runWithParamsInternal</strong>(UserAction, ReflectionMethod, array("sa" => "modifyuser")) </div> <div class="code"><pre><span class="ln">78</span> $oMethod = new ReflectionMethod($this, $sDefault); <span class="ln">79</span> } <span class="ln">80</span> <span class="ln">81</span> // We're all good to go, let's execute it <span class="ln">82</span> // runWithParamsInternal would automatically get the parameters of the method and populate them as required with the params <span class="error"><span class="ln error-ln">83</span> return parent::runWithParamsInternal($this, $oMethod, $params); </span><span class="ln">84</span> } <span class="ln">85</span> <span class="ln">86</span> /** <span class="ln">87</span> * Some functions have different parameters, which are just an alias of the <span class="ln">88</span> * usual parameters we're getting in the url. This function just populates </pre></div> </td> </tr> <tr class="trace core collapsed"> <td class="number"> #6 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /var/www/sondagesen/htmlpublic/framework/web/CController.php(308): <strong>Survey_Common_Action</strong>-><strong>runWithParams</strong>(array("sa" => "modifyuser")) </div> <div class="code"><pre><span class="ln">303</span> { <span class="ln">304</span> $priorAction=$this->_action; <span class="ln">305</span> $this->_action=$action; <span class="ln">306</span> if($this->beforeAction($action)) <span class="ln">307</span> { <span class="error"><span class="ln error-ln">308</span> if($action->runWithParams($this->getActionParams())===false) </span><span class="ln">309</span> $this->invalidActionParams($action); <span class="ln">310</span> else <span class="ln">311</span> $this->afterAction($action); <span class="ln">312</span> } <span class="ln">313</span> $this->_action=$priorAction; </pre></div> </td> </tr> <tr class="trace core collapsed"> <td class="number"> #7 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /var/www/sondagesen/htmlpublic/framework/web/CController.php(286): <strong>CController</strong>-><strong>runAction</strong>(UserAction) </div> <div class="code"><pre><span class="ln">281</span> * @see runAction <span class="ln">282</span> */ <span class="ln">283</span> public function runActionWithFilters($action,$filters) <span class="ln">284</span> { <span class="ln">285</span> if(empty($filters)) <span class="error"><span class="ln error-ln">286</span> $this->runAction($action); </span><span class="ln">287</span> else <span class="ln">288</span> { <span class="ln">289</span> $priorAction=$this->_action; <span class="ln">290</span> $this->_action=$action; <span class="ln">291</span> CFilterChain::create($this,$action,$filters)->run(); </pre></div> </td> </tr> <tr class="trace core collapsed"> <td class="number"> #8 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /var/www/sondagesen/htmlpublic/framework/web/CController.php(265): <strong>CController</strong>-><strong>runActionWithFilters</strong>(UserAction, array()) </div> <div class="code"><pre><span class="ln">260</span> { <span class="ln">261</span> if(($parent=$this->getModule())===null) <span class="ln">262</span> $parent=Yii::app(); <span class="ln">263</span> if($parent->beforeControllerAction($this,$action)) <span class="ln">264</span> { <span class="error"><span class="ln error-ln">265</span> $this->runActionWithFilters($action,$this->filters()); </span><span class="ln">266</span> $parent->afterControllerAction($this,$action); <span class="ln">267</span> } <span class="ln">268</span> } <span class="ln">269</span> else <span class="ln">270</span> $this->missingAction($actionID); </pre></div> </td> </tr> <tr class="trace app expanded"> <td class="number"> #9 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /var/www/sondagesen/htmlpublic/application/controllers/AdminController.php(158): <strong>CController</strong>-><strong>run</strong>("user") </div> <div class="code"><pre><span class="ln">153</span> $this->redirect(array('/admin/authentication/sa/login')); <span class="ln">154</span> } <span class="ln">155</span> } <span class="ln">156</span> } <span class="ln">157</span> <span class="error"><span class="ln error-ln">158</span> return parent::run($action); </span><span class="ln">159</span> } <span class="ln">160</span> <span class="ln">161</span> /** <span class="ln">162</span> * Routes all the actions to their respective places <span class="ln">163</span> * </pre></div> </td> </tr> <tr class="trace core collapsed"> <td class="number"> #10 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /var/www/sondagesen/htmlpublic/framework/web/CWebApplication.php(282): <strong>AdminController</strong>-><strong>run</strong>("user") </div> <div class="code"><pre><span class="ln">277</span> { <span class="ln">278</span> list($controller,$actionID)=$ca; <span class="ln">279</span> $oldController=$this->_controller; <span class="ln">280</span> $this->_controller=$controller; <span class="ln">281</span> $controller->init(); <span class="error"><span class="ln error-ln">282</span> $controller->run($actionID); </span><span class="ln">283</span> $this->_controller=$oldController; <span class="ln">284</span> } <span class="ln">285</span> else <span class="ln">286</span> throw new CHttpException(404,Yii::t('yii','Unable to resolve the request "{route}".', <span class="ln">287</span> array('{route}'=>$route===''?$this->defaultController:$route))); </pre></div> </td> </tr> <tr class="trace core collapsed"> <td class="number"> #11 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /var/www/sondagesen/htmlpublic/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-><strong>runController</strong>("admin/user/sa/modifyuser") </div> <div class="code"><pre><span class="ln">136</span> foreach(array_splice($this->catchAllRequest,1) as $name=>$value) <span class="ln">137</span> $_GET[$name]=$value; <span class="ln">138</span> } <span class="ln">139</span> else <span class="ln">140</span> $route=$this->getUrlManager()->parseUrl($this->getRequest()); <span class="error"><span class="ln error-ln">141</span> $this->runController($route); </span><span class="ln">142</span> } <span class="ln">143</span> <span class="ln">144</span> /** <span class="ln">145</span> * Registers the core application components. <span class="ln">146</span> * This method overrides the parent implementation by registering additional core components. </pre></div> </td> </tr> <tr class="trace core collapsed"> <td class="number"> #12 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /var/www/sondagesen/htmlpublic/framework/base/CApplication.php(185): <strong>CWebApplication</strong>-><strong>processRequest</strong>() </div> <div class="code"><pre><span class="ln">180</span> public function run() <span class="ln">181</span> { <span class="ln">182</span> if($this->hasEventHandler('onBeginRequest')) <span class="ln">183</span> $this->onBeginRequest(new CEvent($this)); <span class="ln">184</span> register_shutdown_function(array($this,'end'),0,false); <span class="error"><span class="ln error-ln">185</span> $this->processRequest(); </span><span class="ln">186</span> if($this->hasEventHandler('onEndRequest')) <span class="ln">187</span> $this->onEndRequest(new CEvent($this)); <span class="ln">188</span> } <span class="ln">189</span> <span class="ln">190</span> /** </pre></div> </td> </tr> <tr class="trace app collapsed"> <td class="number"> #13 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /var/www/sondagesen/htmlpublic/index.php(194): <strong>CApplication</strong>-><strong>run</strong>() </div> <div class="code"><pre><span class="ln">189</span> require_once APPPATH . 'core/LSYii_Application' . EXT; <span class="ln">190</span> <span class="ln">191</span> $config = require_once(APPPATH . 'config/internal' . EXT); <span class="ln">192</span> <span class="ln">193</span> Yii::$enableIncludePath = false; <span class="error"><span class="ln error-ln">194</span> Yii::createApplication('LSYii_Application', $config)->run(); </span><span class="ln">195</span> <span class="ln">196</span> /* End of file index.php */ <span class="ln">197</span> /* Location: ./index.php */ </pre></div> </td> </tr> </tbody></table> </div> <div class="version"> 2018-04-26 08:46:09 Apache <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.18 </div> </div> <script type="text/javascript"> /*<![CDATA[*/ var traceReg = new RegExp("(^|\\s)trace-file(\\s|$)"); var collapsedReg = new RegExp("(^|\\s)collapsed(\\s|$)"); var e = document.getElementsByTagName("div"); for(var j=0,len=e.length;j<len;j++){ if(traceReg.test(e[j].className)){ e[j].onclick = function(){ var trace = this.parentNode.parentNode; if(collapsedReg.test(trace.className)) trace.className = trace.className.replace("collapsed", "expanded"); else trace.className = trace.className.replace("expanded", "collapsed"); } } } /*]]>*/ </script> </body></html> |
|
Fix committed to master branch: http://bugs.limesurvey.org/plugin.php?page=Source/view&id=27076 |
|
Thanks for this excellent bug report |
|
Thank you, for the quick resolution. |
|
Version 3.8.1+180524 released |
|
Date Modified | Username | Field | Change |
---|---|---|---|
2018-04-25 11:09 | BZHNedr | New Issue | |
2018-04-25 11:09 | BZHNedr | File Added: LimeSurvey 3.7 bug 1.jpg | |
2018-04-25 11:09 | BZHNedr | File Added: LimeSurvey 3.7 bug 2.jpg | |
2018-04-25 11:09 | BZHNedr | File Added: LimeSurvey 3.7 bug 3.jpg | |
2018-04-25 11:09 | BZHNedr | File Added: LimeSurvey 3.7 bug 4.jpg | |
2018-04-25 14:45 | DenisChenu | Note Added: 47519 | |
2018-04-26 08:50 | guest | File Added: CDbException.htm | |
2018-04-26 08:50 | guest | Note Added: 47537 | |
2018-04-26 09:42 | DenisChenu | Assigned To | => DenisChenu |
2018-04-26 09:42 | DenisChenu | Status | new => assigned |
2018-04-26 17:47 | DenisChenu | Changeset attached | => LimeSurvey master a2fcabb3 |
2018-04-26 17:47 | DenisChenu | Note Added: 47546 | |
2018-04-26 17:47 | DenisChenu | Resolution | open => fixed |
2018-04-26 17:47 | DenisChenu | Status | assigned => resolved |
2018-04-26 17:47 | DenisChenu | Fixed in Version | => 3.7.x |
2018-04-26 17:47 | DenisChenu | Note Added: 47547 | |
2018-04-27 09:04 | BZHNedr | Note Added: 47548 | |
2018-05-25 11:30 | c_schmitz | Note Added: 47838 | |
2018-05-25 11:30 | c_schmitz | Status | resolved => closed |
2019-11-01 17:26 | c_schmitz | Category | User/User groups => User / Groups / Roles |