View Issue Details

This bug affects 1 person(s).
 2
IDProjectCategoryView StatusLast Update
06386Bug reportsImport/Exportpublic2012-08-03 13:44
Reporterabita1 Assigned Toc_schmitz  
PrioritynormalSeveritypartial_block 
Status closedResolutionfixed 
Product Version2.00RC7 
Fixed in Version2.00RC8 
Summary06386: Importing CSV labels sets from LS website throws SQL exception
Description

Importing CSV labels sets from LS website throws SQL or PHP exceptions/errors, instead of producing a user friendly error within LS.

I can only assume that after throwing the exception, no tangible affront has been made to the underlying LS database, or the status of LS.

There is no notation on the LS website indicating with which LS versions any given sample file might work. Probably would be a good thing to add some DB version or LS versioning information to the website, as well as an indication with the LS program about which versioning of the sample files can be successfully imported (an indication at the point of import/browse).

Steps To Reproduce

Download a [the most recently dated] sample label set from the LS website

In a survey, create a new label set and then attempt to import the above downloaded CSV file.

Additional Information

The error.txt file is the entire returned web page, containing the error with this title, when using the "US_States_Limesurvey_Label_Set":

CDbException

CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'US_States' in 'field list'. The SQL statement executed was: insert INTO labelsets (label_name,languages) VALUES (US_States,en)

The error page is uploaded in its entirety.


A different error is generated using the "US States" label set. That error, "Undefined variable: labelsarray ", arrives out of PHP. I don't include that error page.

TagsNo tags attached.
Attached Files
error.txt (6,248 bytes)   
CDbException

CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'US_States' in 'field list'. The SQL statement executed was: insert INTO labelsets (label_name,languages) VALUES (US_States,en)

/home/content/FooFoo/html/limesurvey2/framework/db/CDbCommand.php(528)

516             return $result;
517         }
518         catch(Exception $e)
519         {
520             if($this->_connection->enableProfiling)
521                 Yii::endProfile('system.db.CDbCommand.query('.$this->getText().$par.')','system.db.CDbCommand.query');
522             $errorInfo = $e instanceof PDOException ? $e->errorInfo : null;
523             $message = $e->getMessage();
524             Yii::log(Yii::t('yii','CDbCommand::{method}() failed: {error}. The SQL statement executed was: {sql}.',
525                 array('{method}'=>$method, '{error}'=>$message, '{sql}'=>$this->getText().$par)),CLogger::LEVEL_ERROR,'system.db.CDbCommand');
526             if(YII_DEBUG)
527                 $message .= '. The SQL statement executed was: '.$this->getText().$par;
528             throw new CDbException(Yii::t('yii','CDbCommand failed to execute the SQL statement: {error}',
529                 array('{error}'=>$message)),(int)$e->getCode(),$errorInfo);
530         }
531     }
532 
533     /**
534      * Builds a SQL SELECT statement from the given query specification.
535      * @param array $query the query specification in name-value pairs. The following
536      * query options are supported: {@link select}, {@link distinct}, {@link from},
537      * {@link where}, {@link join}, {@link group}, {@link having}, {@link order},
538      * {@link limit}, {@link offset} and {@link union}.
539      * @return string the SQL statement
540      * @since 1.1.6

Stack Trace
#0 	
�
 /home/content/FooFoo/html/limesurvey2/framework/db/CDbCommand.php(372): CDbCommand->queryInternal("", 0, array())

367      * @return CDbDataReader the reader object for fetching the query result
368      * @throws CException execution failed
369      */
370     public function query($params=array())
371     {
372         return $this->queryInternal('',0,$params);
373     }
374 
375     /**
376      * Executes the SQL statement and returns all rows.
377      * @param boolean $fetchAssociative whether each row should be returned as an associated array with

#1 	
�
 /home/content/FooFoo/html/limesurvey2/application/helpers/admin/import_helper.php(2031): CDbCommand->query()

2026 
2027             $newvalues=array_values($labelsetrowdata);
2028             if ($xssfilter)
2029                 XSSFilterArray($newvalues);
2030             $lsainsert = "insert INTO {{labelsets}} (".implode(',',array_keys($labelsetrowdata)).") VALUES (".implode(',',$newvalues).")"; //handle db prefix
2031             $lsiresult= Yii::app()->db->createCommand($lsainsert)->query();
2032             $results['labelsets']++;
2033 
2034             // Get the new insert id for the labels inside this labelset
2035             $newlid=Yii::app()->db->getLastInsertID();
2036 

#2 	
�
 /home/content/FooFoo/html/limesurvey2/application/controllers/admin/labels.php(143): CSVImportLabelset("/home/content/FooFoo/html/limesurvey2/tmp/US_States_Limes...", array("checkforduplicates" => "on"))

138             $options['checkforduplicates'] = 'off';
139             if (isset($_POST['checkforduplicates']))
140                 $options['checkforduplicates'] = $_POST['checkforduplicates'];
141 
142             if (strtolower($sExtension) == 'csv')
143                 $aImportResults = CSVImportLabelset($sFullFilepath, $options);
144             elseif (strtolower($sExtension) == 'lsl')
145                 $aImportResults = XMLImportLabelsets($sFullFilepath, $options);
146             else
147                 $this->getController()->error($clang->gT("Uploaded label set file needs to have an .lsl extension."));
148 

#3 	
 unknown(0): labels->import()
#4 	
�
 /home/content/FooFoo/html/limesurvey2/framework/web/actions/CAction.php(107): ReflectionMethod->invokeArgs(labels, array())

102             else if($param->isDefaultValueAvailable())
103                 $ps[]=$param->getDefaultValue();
104             else
105                 return false;
106         }
107         $method->invokeArgs($object,$ps);
108         return true;
109     }
110 }

#5 	
�
 /home/content/FooFoo/html/limesurvey2/application/core/Survey_Common_Action.php(82): CAction->runWithParamsInternal(labels, ReflectionMethod, array("sa" => "import"))

77             $oMethod = new ReflectionMethod($this, $sDefault);
78         }
79 
80         // We're all good to go, let's execute it
81         // runWithParamsInternal would automatically get the parameters of the method and populate them as required with the params
82         return parent::runWithParamsInternal($this, $oMethod, $params);
83     }
84 
85     /**
86     * Some functions have different parameters, which are just an alias of the
87     * usual parameters we're getting in the url. This function just populates

#6 	
+
 /home/content/FooFoo/html/limesurvey2/framework/web/CController.php(309): Survey_Common_Action->runWithParams(array("sa" => "import"))
#7 	
+
 /home/content/FooFoo/html/limesurvey2/framework/web/CController.php(287): CController->runAction(labels)
#8 	
+
 /home/content/FooFoo/html/limesurvey2/framework/web/CController.php(266): CController->runActionWithFilters(labels, array())
#9 	
+
 /home/content/FooFoo/html/limesurvey2/application/controllers/AdminController.php(158): CController->run("labels")
#10 	
+
 /home/content/FooFoo/html/limesurvey2/framework/web/CWebApplication.php(276): AdminController->run("labels")
#11 	
+
 /home/content/FooFoo/html/limesurvey2/framework/web/CWebApplication.php(135): CWebApplication->runController("admin/labels/sa/import")
#12 	
+
 /home/content/FooFoo/html/limesurvey2/framework/base/CApplication.php(162): CWebApplication->processRequest()
#13 	
+
 /home/content/FooFoo/html/limesurvey2/index.php(171): CApplication->run()
 
2012-07-25 07:19:12 Apache Yii Framework/1.1.10
error.txt (6,248 bytes)   
Bug heat2
Complete LimeSurvey version number (& build)120721
I will donate to the project if issue is resolvedNo
BrowserFireFox 14
Database type & versionMySQL
Server OS (if known)Linux / Apache
Webserver software & version (if known)1.3.3
PHP Version5.2.17

Users monitoring this issue

There are no users monitoring this issue.

Activities

c_schmitz

c_schmitz

2012-07-26 11:09

administrator   ~19978

Fix committed to Yii branch: http://bugs.limesurvey.org/plugin.php?page=Source/view&id=9139

c_schmitz

c_schmitz

2012-08-03 13:44

administrator   ~20141

2.00RC8 released

Related Changesets

LimeSurvey: Yii 945dc7f2

2012-07-26 02:10:03

c_schmitz

Details Diff
Fixed issue 06386: Importing CSV labels sets from LS website throws SQL exception Affected Issues
06386
mod - application/controllers/admin/labels.php Diff File
mod - application/helpers/admin/import_helper.php Diff File
mod - application/helpers/common_helper.php Diff File

Issue History

Date Modified Username Field Change
2012-07-25 16:37 abita1 New Issue
2012-07-25 16:37 abita1 File Added: error.txt
2012-07-25 16:52 c_schmitz Assigned To => c_schmitz
2012-07-25 16:52 c_schmitz Status new => assigned
2012-07-26 11:09 c_schmitz Changeset attached => LimeSurvey Yii 945dc7f2
2012-07-26 11:09 c_schmitz Note Added: 19978
2012-07-26 11:09 c_schmitz Resolution open => fixed
2012-07-26 11:10 c_schmitz Status assigned => resolved
2012-07-26 11:10 c_schmitz Fixed in Version => 2.00+
2012-08-03 13:44 c_schmitz Fixed in Version 2.00+ => 2.00RC8
2012-08-03 13:44 c_schmitz Note Added: 20141
2012-08-03 13:44 c_schmitz Status resolved => closed