View Issue Details

This bug affects 1 person(s).
 4
IDProjectCategoryView StatusLast Update
08958Bug reportsInstallationpublic2016-11-23 09:06
ReporterDenisChenu Assigned Toc_schmitz  
PrioritynormalSeverityminor 
Status closedResolutionfixed 
Product Version2.05+ 
Fixed in Version2.50.x 
Summary08958: Unable to reinstall with another dbPrefix
Description

When trying to reinstall with just another dbPrefix (remove config.php) : last step are broken (admin user creation)

Steps To Reproduce

Install LimeSurvey via HTTP with dbPrefix lime1
Go at the end of installation
Remove config.php file
Reinstall with same DB but with dbPrefix lime2

Internal server error : Could not add optional settings: exception 'CDbException' with message 'CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'admin' for key 'users_name'' in /home/sondages.pro/htdocs/limesurvey_GIT/205/framework/db/CDbCommand.php:358

Additional Information

Set debug 2 and debugsql 1 show the DB prefix are not really updated (lime1_)

But :
Looking at config : it's OK, and tracevar(prefix) show the good prefix

Tested:
Yii::app()->db->schema->getTable('{{users}}', true); ; Not OK
Yii::app()->db->schema->getTables();Yii::app()->db->schema->refresh(); : Not OK
Yii::app()->cache->flush(); : it's OK, but remove index.html from tmp/runtime/

WIth the new tablePrefix to 'aaa_' in config.php:
[13:11:09.124][trace][system.db.CDbCommand] Executing SQL: INSERT INTO bbb_users (users_name, htmleditormode, templateeditormode, questionselectormode, dateformat, password, full_name, parent_id, email, created, lang) VALUES (:yp0, :yp1, :yp2, :yp3, :yp4, :yp5, :yp6, :yp7, :yp8, NOW(), :yp9). Bound with :yp0='admin', :yp1='default', :yp2='default', :yp3='default', :yp4=1, :yp5='5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8', :yp6='Administrator', :yp7=0, :yp8='your-email@example.net', :yp9='en'

TagsNo tags attached.
Attached Files
Exception.html (15,442 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>Exception</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>Exception</h1>

	<p class="message">
		Could not add optional settings: exception 'CDbException' with message
 'CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: 
Integrity constraint violation: 1062 Duplicate entry 'admin' for key 
'users_name'. The SQL statement executed was: INSERT INTO `bbb_users` 
(`users_name`, `htmleditormode`, `templateeditormode`, 
`questionselectormode`, `dateformat`, `password`, `full_name`, 
`parent_id`, `email`, `created`, `lang`) VALUES (:yp0, :yp1, :yp2, :yp3,
 :yp4, :yp5, :yp6, :yp7, :yp8, NOW(), :yp9). Bound with :yp0='admin', 
:yp1='default', :yp2='default', :yp3='default', :yp4=1, 
:yp5='5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8',
 :yp6='Administrator', :yp7=0, :yp8='your-email@example.net', :yp9='en''
 in 
/home/sondages.pro/htdocs/limesurvey_GIT/205/framework/db/CDbCommand.php:358<br>
Stack trace:<br>
#0 /home/sondages.pro/htdocs/limesurvey_GIT/205/framework/db/ar/CActiveRecord.php(1077): CDbCommand-&gt;execute()<br>
#1 /home/sondages.pro/htdocs/limesurvey_GIT/205/framework/db/ar/CActiveRecord.php(806): CActiveRecord-&gt;insert(NULL)<br>
#2 /home/sondages.pro/htdocs/limesurvey_GIT/205/application/controllers/InstallerController.php(642): CActiveRecord-&gt;save()<br>
#3 
/home/sondages.pro/htdocs/limesurvey_GIT/205/application/controllers/InstallerController.php(82):
 InstallerController-&gt;stepOptionalConfiguration()<br>
#4 /home/sondages.pro/htdocs/limesurvey_GIT/205/framework/web/CWebApplication.php(282): InstallerController-&gt;run('optional')<br>
#5 
/home/sondages.pro/htdocs/limesurvey_GIT/205/framework/web/CWebApplication.php(141):
 CWebApplication-&gt;runController('installer/optio...')<br>
#6 /home/sondages.pro/htdocs/limesurvey_GIT/205/framework/base/CApplication.php(180): CWebApplication-&gt;processRequest()<br>
#7 /home/sondages.pro/htdocs/limesurvey_GIT/205/index.php(200): CApplication-&gt;run()<br>
#8 {main}.	</p>

	<div class="source">
		<p class="file">/home/sondages.pro/htdocs/limesurvey_GIT/205/application/controllers/InstallerController.php(660)</p>
		<div class="code"><pre><span class="ln">648</span>                         $permission-&gt;permission='superadmin';
<span class="ln">649</span>                         $permission-&gt;read_p=1;
<span class="ln">650</span>                         $permission-&gt;save();
<span class="ln">651</span>                         // Save  global settings
<span class="ln">652</span>                         $this-&gt;connection-&gt;createCommand()-&gt;insert("{{settings_global}}", array('stg_name' =&gt; 'SessionName', 'stg_value' =&gt; self::_getRandomString()));
<span class="ln">653</span>                         $this-&gt;connection-&gt;createCommand()-&gt;insert("{{settings_global}}", array('stg_name' =&gt; 'sitename', 'stg_value' =&gt; $sDefaultSiteName));
<span class="ln">654</span>                         $this-&gt;connection-&gt;createCommand()-&gt;insert("{{settings_global}}", array('stg_name' =&gt; 'siteadminname', 'stg_value' =&gt; $sDefaultAdminRealName));
<span class="ln">655</span>                         $this-&gt;connection-&gt;createCommand()-&gt;insert("{{settings_global}}", array('stg_name' =&gt; 'siteadminemail', 'stg_value' =&gt; $sDefaultAdminEmail));
<span class="ln">656</span>                         $this-&gt;connection-&gt;createCommand()-&gt;insert("{{settings_global}}", array('stg_name' =&gt; 'siteadminbounce', 'stg_value' =&gt; $sDefaultAdminEmail));
<span class="ln">657</span>                         $this-&gt;connection-&gt;createCommand()-&gt;insert("{{settings_global}}", array('stg_name' =&gt; 'defaultlang', 'stg_value' =&gt; $sDefaultSiteLanguage));
<span class="ln">658</span>                         // only continue if we're error free otherwise setup is broken.
<span class="ln">659</span>                     } catch (Exception $e) {
<span class="error"><span class="ln error-ln">660</span>                         throw new Exception(sprintf('Could not add optional settings: %s.', $e));
</span><span class="ln">661</span>                     }
<span class="ln">662</span> 
<span class="ln">663</span>                     Yii::app()-&gt;session['deletedirectories'] = true;
<span class="ln">664</span> 
<span class="ln">665</span>                     $aData['title'] = $clang-&gt;gT("Success!");
<span class="ln">666</span>                     $aData['descp'] = $clang-&gt;gT("LimeSurvey has been installed successfully.");
<span class="ln">667</span>                     $aData['classesForStep'] = array('off','off','off','off','off','off');
<span class="ln">668</span>                     $aData['progressValue'] = 100;
<span class="ln">669</span>                     $aData['user'] = $sDefaultAdminUserName;
<span class="ln">670</span>                     $aData['pwd'] = $sDefaultAdminPassword;
<span class="ln">671</span> 
<span class="ln">672</span>                     $this-&gt;render('/installer/success_view', $aData);
</pre></div>	</div>

	<div class="traces">
		<h2>Stack Trace</h2>
				<table style="width:100%;">
						<tbody><tr class="trace app expanded">
			<td class="number">
				#0			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/205/application/controllers/InstallerController.php(82): <strong>InstallerController</strong>-&gt;<strong>stepOptionalConfiguration</strong>()				</div>

				<div class="code"><pre><span class="ln">77</span>             case 'populatedb':
<span class="ln">78</span>                 $this-&gt;stepPopulateDb();
<span class="ln">79</span>                 break;
<span class="ln">80</span> 
<span class="ln">81</span>             case 'optional':
<span class="error"><span class="ln error-ln">82</span>                 $this-&gt;stepOptionalConfiguration();
</span><span class="ln">83</span>                 break;
<span class="ln">84</span> 
<span class="ln">85</span>             case 'index' :
<span class="ln">86</span>             default :
<span class="ln">87</span>                 $this-&gt;redirect(array('installer/welcome'));
</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;/home/sondages.pro/htdocs/limesurvey_GIT/205/framework/web/CWebApplication.php(282): <strong>InstallerController</strong>-&gt;<strong>run</strong>("optional")				</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">
				#2			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/205/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("installer/optional")				</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">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/205/framework/base/CApplication.php(180): <strong>CWebApplication</strong>-&gt;<strong>processRequest</strong>()				</div>

				<div class="code"><pre><span class="ln">175</span>     public function run()
<span class="ln">176</span>     {
<span class="ln">177</span>         if($this-&gt;hasEventHandler('onBeginRequest'))
<span class="ln">178</span>             $this-&gt;onBeginRequest(new CEvent($this));
<span class="ln">179</span>         register_shutdown_function(array($this,'end'),0,false);
<span class="error"><span class="ln error-ln">180</span>         $this-&gt;processRequest();
</span><span class="ln">181</span>         if($this-&gt;hasEventHandler('onEndRequest'))
<span class="ln">182</span>             $this-&gt;onEndRequest(new CEvent($this));
<span class="ln">183</span>     }
<span class="ln">184</span> 
<span class="ln">185</span>     /**
</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;/home/sondages.pro/htdocs/limesurvey_GIT/205/index.php(200): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">195</span>         die (sprintf('%s should be writable by the webserver (755 or 775).', $runtimePath));
<span class="ln">196</span>     }
<span class="ln">197</span> }
<span class="ln">198</span> 
<span class="ln">199</span> 
<span class="error"><span class="ln error-ln">200</span> Yii::createApplication('LSYii_Application', $config)-&gt;run();
</span><span class="ln">201</span> 
<span class="ln">202</span> /* End of file index.php */
<span class="ln">203</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</tbody></table>
	</div>

	<div class="version">
		2014-04-11 13:10:52 Apache/2.2.22 (Debian) <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.14	</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>



<script type="text/javascript">
/*<![CDATA[*/
if(typeof(console)=='object')
{
	console.group("Application Log");
	console.log("[13:10:52.227][trace][system.db.ar.CActiveRecord] Plugin.findAllByAttributes()");
	console.log("[13:10:52.227][trace][system.db.CDbConnection] Opening DB connection");
	console.log("[13:10:52.232][trace][system.db.CDbCommand] Querying SQL: SELECT * FROM `bbb_plugins` `t` WHERE `t`.`active`=:yp0. Bound with :yp0=1");
	console.log("[13:10:52.254][trace][system.db.ar.CActiveRecord] User.insert()");
	console.log("[13:10:52.255][trace][system.db.CDbCommand] Executing SQL: INSERT INTO `bbb_users` (`users_name`, `htmleditormode`, `templateeditormode`, `questionselectormode`, `dateformat`, `password`, `full_name`, `parent_id`, `email`, `created`, `lang`) VALUES (:yp0, :yp1, :yp2, :yp3, :yp4, :yp5, :yp6, :yp7, :yp8, NOW(), :yp9). Bound with :yp0=\'admin\', :yp1=\'default\', :yp2=\'default\', :yp3=\'default\', :yp4=1, :yp5=\'5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8\', :yp6=\'Administrator\', :yp7=0, :yp8=\'your-email@example.net\', :yp9=\'en\'");
	console.groupEnd();
}
/*]]>*/
</script></body></html>
Exception.html (15,442 bytes)   
Bug heat4
Complete LimeSurvey version number (& build)140411
I will donate to the project if issue is resolvedNo
Browsernot relevant
Database type & versionMysql 5
Server OS (if known)debian/linux
Webserver software & version (if known)apache
PHP VersionPHP Version 5.4.4

Relationships

parent of 09330 closedDenisChenu Unable to login just after installation 
related to 09556 closedDenisChenu Updating a 1.92: some column seems not created : DB caching issue 

Users monitoring this issue

There are no users monitoring this issue.

Activities

DenisChenu

DenisChenu

2014-04-11 13:15

developer   ~29716

PS: very rarely issue ... only when dev do some testing surely ;)

DenisChenu

DenisChenu

2014-04-12 18:49

developer   ~29722

I really had no idea on a fix here.

Take nearly an hour to try some 'cache' issue. I leave it now but try to do a post for Yii. Think it's a yii issue here.

c_schmitz

c_schmitz

2014-04-14 11:12

administrator   ~29729

Why not just kill the files in the schema cache at the beginning of the installation (Yii::app()->cache->flush();) and restore the index file after that by placing an empty index.html

DenisChenu

DenisChenu

2014-04-14 11:44

developer   ~29732

Yes, maybe ....

But then : why put this file : we can just create it at installation end ?

c_schmitz

c_schmitz

2014-04-14 11:56

administrator   ~29733

You could just deactivate the schemacache during installation. CHeck out the Yii docs.

DenisChenu

DenisChenu

2014-11-24 10:27

developer   ~31076

Last edited: 2016-06-05 17:39

09330 have same behaviour : remove runtime/cache/ don't work, bur remove runtime/* work.

?????

c_schmitz

c_schmitz

2016-06-05 17:57

administrator   ~39228

Fix committed to master branch: http://bugs.limesurvey.org/plugin.php?page=Source/view&amp;id=19331

c_schmitz

c_schmitz

2016-06-06 15:16

administrator   ~39244

Version 2.50 Release 160606 released

Related Changesets

LimeSurvey: master 859f91f3

2016-06-05 15:57:30

c_schmitz

Details Diff
Fixed issue 08958: Unable to reinstall with another dbPrefix Affected Issues
08958
mod - application/controllers/InstallerController.php Diff File

Issue History

Date Modified Username Field Change
2014-04-11 13:12 DenisChenu New Issue
2014-04-11 13:12 DenisChenu File Added: Exception.html
2014-04-11 13:15 DenisChenu Note Added: 29716
2014-04-12 18:46 c_schmitz Assigned To => DenisChenu
2014-04-12 18:46 c_schmitz Status new => assigned
2014-04-12 18:47 DenisChenu Assigned To DenisChenu =>
2014-04-12 18:49 DenisChenu Note Added: 29722
2014-04-12 18:49 DenisChenu Assigned To => DenisChenu
2014-04-12 18:49 DenisChenu Status assigned => new
2014-04-12 18:49 DenisChenu Assigned To DenisChenu =>
2014-04-14 11:12 c_schmitz Note Added: 29729
2014-04-14 11:44 DenisChenu Note Added: 29732
2014-04-14 11:44 DenisChenu Assigned To => DenisChenu
2014-04-14 11:44 DenisChenu Status new => assigned
2014-04-14 11:56 c_schmitz Note Added: 29733
2014-11-24 08:36 DenisChenu Relationship added parent of 09330
2014-11-24 10:27 DenisChenu Note Added: 31076
2015-03-09 15:00 DenisChenu Relationship added related to 09556
2016-05-31 10:34 DenisChenu Assigned To DenisChenu =>
2016-06-04 14:23 DenisChenu Status assigned => new
2016-06-05 17:39 c_schmitz Note Edited: 31076
2016-06-05 17:57 c_schmitz Changeset attached => LimeSurvey master 859f91f3
2016-06-05 17:57 c_schmitz Note Added: 39228
2016-06-05 17:57 c_schmitz Assigned To => c_schmitz
2016-06-05 17:57 c_schmitz Resolution open => fixed
2016-06-05 18:03 c_schmitz Status new => resolved
2016-06-05 18:03 c_schmitz Fixed in Version => 2.5
2016-06-06 15:16 c_schmitz Note Added: 39244
2016-06-06 15:16 c_schmitz Status resolved => closed
2016-11-23 09:06 DenisChenu Relationship added related to 11943
2016-11-23 09:09 c_schmitz Relationship deleted related to 11943