View Issue Details

IDProjectCategoryView StatusLast Update
16049Bug reportsImport/Exportpublic2020-03-27 20:21
Reporterandreicad Assigned To 
PrioritynoneSeveritycrash 
Status newResolutionopen 
Product Version4.1.13 
Summary16049: Importing survey (LSS) fails with: SQLSTATE[23505]: Unique violation: 7 ERROR: duplicate key value violates unique constraint "g
Description

Using LimeSurvey 4.1.13 (Git commit ec14631bbdb34be768d56487761c96cc4931b748)

Steps To Reproduce

Export existing survey to LSS file.
Click Surveys > Create a new survey > Import, select the LSS file, click Import Survey.

Expected results: the survey is imported correctly.

Observed results: the import fails with a message similar to:
CDbCommand failed to execute the SQL statement: SQLSTATE[23505]: Unique violation: 7 ERROR: duplicate key value violates unique constraint "groups_pkey"
DETAIL: Key (gid)=(32) already exists.. The SQL statement executed was: INSERT INTO "groups" ("sid", "group_order", "randomization_group", "grelevance") VALUES (:yp0, :yp1, :yp2, :yp3). Bound with :yp0=445325, :yp1=2, :yp2='', :yp3=''

Note: it makes no difference whether the option 'Convert resource links and expression fields?' is enabled or not. The import fails the same way in either case.

Additional Information

Enabling debug=2 and debugsql=1, the attached report was obtained (CDBException.html).
Please note, the profiling summary was removed, as it included sensitive information that I am not allowed to share.

TagsNo tags attached.
Complete LimeSurvey version number (& build)4.1.13 (Git commit ec14631bbdb34be768d56487761c96cc4931b748)
I will donate to the project if issue is resolvedNo
Browserany
Database & DB-VersionPostgreSQL 10
Server OS (if known)Ubuntu 18.04.4 LTS
Webserver software & version (if known)nginx/1.14.0
PHP VersionPHP Version 7.2.24-0ubuntu0.18.04.3

Activities

andreicad

andreicad

2020-03-26 17:03

reporter  

CDbException.htm (25,284 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 failed to execute the SQL statement: SQLSTATE[23505]: 
Unique violation: 7 ERROR:  duplicate key value violates unique 
constraint "groups_pkey"<br>
DETAIL:  Key (gid)=(32) already exists.. The SQL statement executed was:
 INSERT INTO "groups" ("sid", "group_order", "randomization_group", 
"grelevance") VALUES (:yp0, :yp1, :yp2, :yp3). Bound with :yp0=445325, 
:yp1=2, :yp2='', :yp3=''	</p>

	<div class="source">
		<p class="file">/var/www/html/sg_survey/framework/db/CDbCommand.php(358)</p>
		<div class="code"><pre><span class="ln">346</span>         {
<span class="ln">347</span>             if($this-&gt;_connection-&gt;enableProfiling)
<span class="ln">348</span>                 Yii::endProfile('system.db.CDbCommand.execute('.$this-&gt;getText().$par.')','system.db.CDbCommand.execute');
<span class="ln">349</span> 
<span class="ln">350</span>             $errorInfo=$e instanceof PDOException ? $e-&gt;errorInfo : null;
<span class="ln">351</span>             $message=$e-&gt;getMessage();
<span class="ln">352</span>             Yii::log(Yii::t('yii','CDbCommand::execute() failed: {error}. The SQL statement executed was: {sql}.',
<span class="ln">353</span>                 array('{error}'=&gt;$message, '{sql}'=&gt;$this-&gt;getText().$par)),CLogger::LEVEL_ERROR,'system.db.CDbCommand');
<span class="ln">354</span> 
<span class="ln">355</span>             if(YII_DEBUG)
<span class="ln">356</span>                 $message.='. The SQL statement executed was: '.$this-&gt;getText().$par;
<span class="ln">357</span> 
<span class="error"><span class="ln error-ln">358</span>             throw new CDbException(Yii::t('yii','CDbCommand failed to execute the SQL statement: {error}',
</span><span class="ln">359</span>                 array('{error}'=&gt;$message)),(int)$e-&gt;getCode(),$errorInfo);
<span class="ln">360</span>         }
<span class="ln">361</span>     }
<span class="ln">362</span> 
<span class="ln">363</span>     /**
<span class="ln">364</span>      * Executes the SQL statement and returns query result.
<span class="ln">365</span>      * This method is for executing an SQL query that returns result set.
<span class="ln">366</span>      * @param array $params input parameters (name=&gt;value) for the SQL execution. This is an alternative
<span class="ln">367</span>      * to {@link bindParam} and {@link bindValue}. If you have multiple input parameters, passing
<span class="ln">368</span>      * them in this way can improve the performance. Note that if you pass parameters in this way,
<span class="ln">369</span>      * you cannot bind parameters or values using {@link bindParam} or {@link bindValue}, and vice versa.
<span class="ln">370</span>      * Please also note that all values are treated as strings in this case, if you need them to be handled as
</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>
										&nbsp;/var/www/html/sg_survey/framework/db/ar/CActiveRecord.php(1083): <strong>CDbCommand</strong>-&gt;<strong>execute</strong>()				</div>

				<div class="code"><pre><span class="ln">1078</span>         {
<span class="ln">1079</span>             Yii::trace(get_class($this).'.insert()','system.db.ar.CActiveRecord');
<span class="ln">1080</span>             $builder=$this-&gt;getCommandBuilder();
<span class="ln">1081</span>             $table=$this-&gt;getTableSchema();
<span class="ln">1082</span>             $command=$builder-&gt;createInsertCommand($table,$this-&gt;getAttributes($attributes));
<span class="error"><span class="ln error-ln">1083</span>             if($command-&gt;execute())
</span><span class="ln">1084</span>             {
<span class="ln">1085</span>                 $primaryKey=$table-&gt;primaryKey;
<span class="ln">1086</span>                 if($table-&gt;sequenceName!==null)
<span class="ln">1087</span>                 {
<span class="ln">1088</span>                     if(is_string($primaryKey) &amp;&amp; $this-&gt;$primaryKey===null)
</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>
										&nbsp;/var/www/html/sg_survey/framework/db/ar/CActiveRecord.php(811): <strong>CActiveRecord</strong>-&gt;<strong>insert</strong>(null)				</div>

				<div class="code"><pre><span class="ln">806</span>      * @return boolean whether the saving succeeds
<span class="ln">807</span>      */
<span class="ln">808</span>     public function save($runValidation=true,$attributes=null)
<span class="ln">809</span>     {
<span class="ln">810</span>         if(!$runValidation || $this-&gt;validate($attributes))
<span class="error"><span class="ln error-ln">811</span>             return $this-&gt;getIsNewRecord() ? $this-&gt;insert($attributes) : $this-&gt;update($attributes);
</span><span class="ln">812</span>         else
<span class="ln">813</span>             return false;
<span class="ln">814</span>     }
<span class="ln">815</span> 
<span class="ln">816</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>
										&nbsp;/var/www/html/sg_survey/application/helpers/admin/import_helper.php(1510): <strong>CActiveRecord</strong>-&gt;<strong>save</strong>()				</div>

				<div class="code"><pre><span class="ln">1505</span>             }
<span class="ln">1506</span>             if (!isset($aGIDReplacements[$oldgid])) {
<span class="ln">1507</span>                 $questionGroup = new QuestionGroup();
<span class="ln">1508</span>                 $questionGroup-&gt;attributes = $insertdata;
<span class="ln">1509</span>                 $questionGroup-&gt;sid = $iNewSID;
<span class="error"><span class="ln error-ln">1510</span>                 if (!$questionGroup-&gt;save()) {
</span><span class="ln">1511</span>                     safeDie(gT("Error").": Failed to insert data [3]&lt;br /&gt;");
<span class="ln">1512</span>                 }
<span class="ln">1513</span>                 $newgid = $questionGroup-&gt;gid;
<span class="ln">1514</span>                 $aGIDReplacements[$oldgid] = $newgid; // add old and new qid to the mapping array
<span class="ln">1515</span>                 $results['groups']++;
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/sg_survey/application/helpers/admin/import_helper.php(1206): <strong>XMLImportSurvey</strong>("/var/www/html/sg_survey/tmp/6xdpwuc5yxd8g7dcw9ge2eptp76ny6.lss", "&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;document&gt;
 &lt;LimeSurveyDo...", null, null, ...)				</div>

				<div class="code"><pre><span class="ln">1201</span>     } else {
<span class="ln">1202</span>         $sExtension = "";
<span class="ln">1203</span>     }
<span class="ln">1204</span>     switch ($sExtension) {
<span class="ln">1205</span>         case 'lss':
<span class="error"><span class="ln error-ln">1206</span>             $aImportResults = XMLImportSurvey($sFullFilePath, null, $sNewSurveyName, $DestSurveyID, $bTranslateLinksFields);
</span><span class="ln">1207</span>             if (!empty($aImportResults['newsid'])) {
<span class="ln">1208</span>                 TemplateConfiguration::checkAndcreateSurveyConfig($aImportResults['newsid']);
<span class="ln">1209</span>             }
<span class="ln">1210</span>             return $aImportResults;
<span class="ln">1211</span>         case 'txt':
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#4			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/sg_survey/application/controllers/admin/surveyadmin.php(1231): <strong>importSurveyFile</strong>("/var/www/html/sg_survey/tmp/6xdpwuc5yxd8g7dcw9ge2eptp76ny6.lss", true)				</div>

				<div class="code"><pre><span class="ln">1226</span> 
<span class="ln">1227</span>             // Now, we have the survey : start importing
<span class="ln">1228</span>             Yii::app()-&gt;loadHelper('admin/import');
<span class="ln">1229</span> 
<span class="ln">1230</span>             if ($action == 'importsurvey' &amp;&amp; !$aData['bFailed']) {
<span class="error"><span class="ln error-ln">1231</span>                 $aImportResults = importSurveyFile($sFullFilepath, (Yii::app()-&gt;request-&gt;getPost('translinksfields') == '1'));
</span><span class="ln">1232</span>                 if (is_null($aImportResults)) {
<span class="ln">1233</span>                     $aImportResults = array(
<span class="ln">1234</span>                         'error'=&gt;gT("Unknown error while reading the file, no survey created.")
<span class="ln">1235</span>                     );
<span class="ln">1236</span>                 }
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#5			</td>
			<td class="content">
				<div class="trace-file">
										&nbsp;unknown(0): <strong>SurveyAdmin</strong>-&gt;<strong>copy</strong>()				</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>
										&nbsp;/var/www/html/sg_survey/framework/web/actions/CAction.php(109): <strong>ReflectionMethod</strong>-&gt;<strong>invokeArgs</strong>(SurveyAdmin, array())				</div>

				<div class="code"><pre><span class="ln">104</span>             elseif($param-&gt;isDefaultValueAvailable())
<span class="ln">105</span>                 $ps[]=$param-&gt;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-&gt;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 collapsed">
			<td class="number">
				#7			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/sg_survey/application/core/Survey_Common_Action.php(86): <strong>CAction</strong>-&gt;<strong>runWithParamsInternal</strong>(SurveyAdmin, ReflectionMethod, array("r" =&gt; "admin/survey/sa/copy", "sa" =&gt; "copy", "sAction" =&gt; "importsurvey"))				</div>

				<div class="code"><pre><span class="ln">81</span>             $oMethod = new ReflectionMethod($this, $sDefault);
<span class="ln">82</span>         }
<span class="ln">83</span> 
<span class="ln">84</span>         // We're all good to go, let's execute it
<span class="ln">85</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">86</span>         return parent::runWithParamsInternal($this, $oMethod, $params);
</span><span class="ln">87</span>     }
<span class="ln">88</span> 
<span class="ln">89</span>     /**
<span class="ln">90</span>      * Some functions have different parameters, which are just an alias of the
<span class="ln">91</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">
				#8			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/sg_survey/framework/web/CController.php(308): <strong>Survey_Common_Action</strong>-&gt;<strong>runWithParams</strong>(array("r" =&gt; "admin/survey/sa/copy", "sa" =&gt; "copy", "sAction" =&gt; "importsurvey"))				</div>

				<div class="code"><pre><span class="ln">303</span>     {
<span class="ln">304</span>         $priorAction=$this-&gt;_action;
<span class="ln">305</span>         $this-&gt;_action=$action;
<span class="ln">306</span>         if($this-&gt;beforeAction($action))
<span class="ln">307</span>         {
<span class="error"><span class="ln error-ln">308</span>             if($action-&gt;runWithParams($this-&gt;getActionParams())===false)
</span><span class="ln">309</span>                 $this-&gt;invalidActionParams($action);
<span class="ln">310</span>             else
<span class="ln">311</span>                 $this-&gt;afterAction($action);
<span class="ln">312</span>         }
<span class="ln">313</span>         $this-&gt;_action=$priorAction;
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#9			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/sg_survey/framework/web/CController.php(286): <strong>CController</strong>-&gt;<strong>runAction</strong>(SurveyAdmin)				</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-&gt;runAction($action);
</span><span class="ln">287</span>         else
<span class="ln">288</span>         {
<span class="ln">289</span>             $priorAction=$this-&gt;_action;
<span class="ln">290</span>             $this-&gt;_action=$action;
<span class="ln">291</span>             CFilterChain::create($this,$action,$filters)-&gt;run();
</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>
										&nbsp;/var/www/html/sg_survey/framework/web/CController.php(265): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(SurveyAdmin, array())				</div>

				<div class="code"><pre><span class="ln">260</span>         {
<span class="ln">261</span>             if(($parent=$this-&gt;getModule())===null)
<span class="ln">262</span>                 $parent=Yii::app();
<span class="ln">263</span>             if($parent-&gt;beforeControllerAction($this,$action))
<span class="ln">264</span>             {
<span class="error"><span class="ln error-ln">265</span>                 $this-&gt;runActionWithFilters($action,$this-&gt;filters());
</span><span class="ln">266</span>                 $parent-&gt;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-&gt;missingAction($actionID);
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#11			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/sg_survey/application/controllers/AdminController.php(172): <strong>CController</strong>-&gt;<strong>run</strong>("survey")				</div>

				<div class="code"><pre><span class="ln">167</span>         }
<span class="ln">168</span> 
<span class="ln">169</span>         $this-&gt;runModuleController($action);
<span class="ln">170</span> 
<span class="ln">171</span> 
<span class="error"><span class="ln error-ln">172</span>         return parent::run($action);
</span><span class="ln">173</span>     }
<span class="ln">174</span> 
<span class="ln">175</span>     /**
<span class="ln">176</span>      * Starting with LS4, 3rd party developper can extends any of the LimeSurve controllers.
<span class="ln">177</span>      */
</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>
										&nbsp;/var/www/html/sg_survey/framework/web/CWebApplication.php(282): <strong>AdminController</strong>-&gt;<strong>run</strong>("survey")				</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-&gt;_controller;
<span class="ln">280</span>             $this-&gt;_controller=$controller;
<span class="ln">281</span>             $controller-&gt;init();
<span class="error"><span class="ln error-ln">282</span>             $controller-&gt;run($actionID);
</span><span class="ln">283</span>             $this-&gt;_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}'=&gt;$route===''?$this-&gt;defaultController:$route)));
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#13			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/sg_survey/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("admin/survey/sa/copy")				</div>

				<div class="code"><pre><span class="ln">136</span>             foreach(array_splice($this-&gt;catchAllRequest,1) as $name=&gt;$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-&gt;getUrlManager()-&gt;parseUrl($this-&gt;getRequest());
<span class="error"><span class="ln error-ln">141</span>         $this-&gt;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">
				#14			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/sg_survey/framework/base/CApplication.php(185): <strong>CWebApplication</strong>-&gt;<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-&gt;hasEventHandler('onBeginRequest'))
<span class="ln">183</span>             $this-&gt;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-&gt;processRequest();
</span><span class="ln">186</span>         if($this-&gt;hasEventHandler('onEndRequest'))
<span class="ln">187</span>             $this-&gt;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">
				#15			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/sg_survey/index.php(182): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">177</span> require_once APPPATH . 'core/LSYii_Application' . EXT;
<span class="ln">178</span> 
<span class="ln">179</span> $config = require_once(APPPATH . 'config/internal' . EXT);
<span class="ln">180</span> 
<span class="ln">181</span> Yii::$enableIncludePath = false;
<span class="error"><span class="ln error-ln">182</span> Yii::createApplication('LSYii_Application', $config)-&gt;run();
</span><span class="ln">183</span> 
<span class="ln">184</span> /* End of file index.php */
<span class="ln">185</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</tbody></table>
	</div>

	<div class="version">
		2020-03-26 16:34:34 nginx/1.14.0 <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.22-dev	</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>




<!-- end of profiling summary --></body></html>
<!-- start profiling summary -->
CDbException.htm (25,284 bytes)   
DenisChenu

DenisChenu

2020-03-27 09:16

developer   ~56798

Ned the faulty lss

andreicad

andreicad

2020-03-27 17:10

reporter   ~56819

I'm sorry, but due to organization policies, I am unable to share the LSS files.

Not sure if this helps, but I thought I should mention two things.

We have tested multiple LSS export/imports (6, to be precise), and each and every one of them failed on re-import in the same way.
In other words, this issue does not look related to one particular survey, but more likely to the state of the database, or incorrect indexes or keys.

To unblock ourselves, we have tried setting up a brand new LimeSurvey instance, with the same code version, but starting from an empty database.
We ran "php console.php install" to set up an empty DB, and then imported all existing surveys on the new instance.
This was (to our surprise!) successful, and we were able to transfer all 20 surveys that were present on the broken instance, exported as LSS or LSA files, as needed.

Therefore, this issue is no longer blocking us, but hopefully the information here may still be useful to some extent.

DenisChenu

DenisChenu

2020-03-27 18:06

developer   ~56824

Please : on previous DB : https://manual.limesurvey.org/Check_data_integrity

andreicad

andreicad

2020-03-27 20:21

reporter   ~56825

Thank you. Ran a DB integrity check, but it flagged nothing of substance, only obsolete survey response tables. Removing those and re-running the DB integrity checks passed, but the issue remains.

Issue History

Date Modified Username Field Change
2020-03-26 17:03 andreicad New Issue
2020-03-26 17:03 andreicad File Added: CDbException.htm
2020-03-27 09:16 DenisChenu Note Added: 56798
2020-03-27 11:02 cdorin Status new => feedback
2020-03-27 17:10 andreicad Note Added: 56819
2020-03-27 17:10 andreicad Status feedback => new
2020-03-27 18:06 DenisChenu Note Added: 56824
2020-03-27 20:21 andreicad Note Added: 56825