Перейти к содержимому

Starley25

Регистрация: 06 янв 2021
Offline Активность: 30 янв 2023 17:53
-----

Мои темы

TestLink 2.0 (Dashio)

11 января 2021 - 07:56

Коллеги, добрый день.

У кого был опыт развертывания/внедрения?

Помимо синтаксических ошибок в php существует масса проблем с доступом к БД при условии, что одна и та же ссылка - Search Requirement Specifications в 1.9.20 отрабатывает корректно, в 2.0.0-20201221-01 получаем:

 ============================================================================== 
 DB Access Error - debug_print_backtrace() OUTPUT START 
 ATTENTION: Enabling more debug info will produce path disclosure weakness (CWE-200) 
            Having this additional Information could be useful for reporting 
            issue to development TEAM. 
 ============================================================================== 
HHHH#0  database->exec_query( SELECT SRS.id,NH.name AS title  FROM req_specs SRS,  nodes_hierarchy NH , requirements REQ  WHERE testproject_id=  AND SRS.id=NH.id  AND SRS.id = REQ.srs_id  ORDER BY title, -1) called at [C:\wamp64\www\testlink2.0.0-20201221-01\lib\functions\database.class.php:723]
#1  database->fetchColumnsIntoMap( SELECT SRS.id,NH.name AS title  FROM req_specs SRS,  nodes_hierarchy NH , requirements REQ  WHERE testproject_id=  AND SRS.id=NH.id  AND SRS.id = REQ.srs_id  ORDER BY title, id, title) called at [C:\wamp64\www\testlink2.0.0-20201221-01\lib\functions\testproject.class.php:1455]
#2  testproject->getOptionReqSpec(, 1) called at [C:\wamp64\www\testlink2.0.0-20201221-01\lib\requirements\reqSpecSearchForm.php:38]

фактически не нравится строка 723 функции:

  function fetchColumnsIntoMap($sql,$column1,$column2,$cumulative=0,$limit = -1)
  {
    $result = $this->exec_query($sql,$limit);
    $items = null;
    if ($result)
    {
      while ($myrow = $this->fetch_array($result))
      {
        if($cumulative)
          {
          $items[$myrow[$column1]][] = $myrow[$column2];
        }
        else
        {
          $items[$myrow[$column1]] = $myrow[$column2];
        }
      } 
    }

    unset($result);
    return $items;
  }

выделил её.

Так же не устроила строка 1455 функции:

  function getOptionReqSpec($tproject_id,$get_not_empty=self::GET_EMPTY_REQSPEC)
  {
    $additional_table='';
    $additional_join='';
    if( $get_not_empty )
    {
      $additional_table=", {$this->tables['requirements']} REQ ";
      $additional_join=" AND SRS.id = REQ.srs_id ";
    }
    $sql = " SELECT SRS.id,NH.name AS title " .
           " FROM {$this->tables['req_specs']} SRS, " .
           " {$this->tables['nodes_hierarchy']} NH " . 
           $additional_table .
           " WHERE testproject_id={$tproject_id} " .
           " AND SRS.id=NH.id " .
           $additional_join .
         " ORDER BY title";
    return $this->db->fetchColumnsIntoMap($sql,'id','title');
    //return $this->db->fetchRowsIntoMap($sql,'id'); SRS.doc_id,
  } // function end

выделил.

Ну и крайняя строка со ссылкой на 38 строку:

$reqSpecSet = $tproject_mgr->getOptionReqSpec($args->tprojectID,testproject::GET_NOT_EMPTY_REQSPEC);

Есть ли у кого-нибудь соображения на этот счет? )


Testlink from 1.9.17 up 1.9.18.

06 января 2021 - 15:33

Коллеги, добрый вечер.

Столкнулся с проблемой обновления версии 1.9.17 на 1.9.18.

Получил копию БД существующего экземпляра 1.9.17, развернул БД и нацелил на неё сборку 1.9.17 все работает, далее разархивировал версию 1.9.18 и подсунул в неё config.inc.php и config_db.inc.php из 1.9.17 в итоге при попытке авторизоваться на 1.9.18 получаем сообщение:

 

 

You need to proceed with Manual upgrade of your DB scheme to DB 1.9.18 - Read README file!

Казалось бы нужно запустить 2 эпичных скрипта 

...\testlink-1.9.18\install\sql\alter_tables\1.9.18\mysql\DB.1.9.18\step1\db_schema_update.sql

и 

...\testlink-1.9.18\install\sql\alter_tables\1.9.18\mysql\DB.1.9.18\stepZ\z_final_step.sql

что и было выполнено, но после попытки авторизоваться на виртуальном хосте на этой же машине на версии 1.9.18 получаю ошибку:

 ============================================================================== 
 DB Access Error - debug_print_backtrace() OUTPUT START 
 ATTENTION: Enabling more debug info will produce path disclosure weakness (CWE-200) 
            Having this additional Information could be useful for reporting 
            issue to development TEAM. 
 ============================================================================== 
#0  database->exec_query( /* Class:tlUser- Method:getAccessibleTestPlans- */  SELECT  NH.id, NH.name, TPLAN.is_public,  COALESCE(USER_TPLAN_ROLES.testplan_id,0) AS has_role,  USER_TPLAN_ROLES.role_id AS user_testplan_role, TPLAN.active, 0 AS selected   FROM nodes_hierarchy NH JOIN testplans TPLAN ON NH.id=TPLAN.id   LEFT OUTER JOIN user_testplan_roles USER_TPLAN_ROLES ON TPLAN.id = USER_TPLAN_ROLES.testplan_id  AND USER_TPLAN_ROLES.user_id = 202 WHERE testproject_id = 7428 AND  active = 1 AND  ORDER BY name, -1, -1) called at [C:\wamp64\www\testlink-1.9.18\lib\functions\database.class.php:769]
#1  database->get_recordset( /* Class:tlUser- Method:getAccessibleTestPlans- */  SELECT  NH.id, NH.name, TPLAN.is_public,  COALESCE(USER_TPLAN_ROLES.testplan_id,0) AS has_role,  USER_TPLAN_ROLES.role_id AS user_testplan_role, TPLAN.active, 0 AS selected   FROM nodes_hierarchy NH JOIN testplans TPLAN ON NH.id=TPLAN.id   LEFT OUTER JOIN user_testplan_roles USER_TPLAN_ROLES ON TPLAN.id = USER_TPLAN_ROLES.testplan_id  AND USER_TPLAN_ROLES.user_id = 202 WHERE testproject_id = 7428 AND  active = 1 AND  ORDER BY name) called at [C:\wamp64\www\testlink-1.9.18\lib\functions\tlUser.class.php:1046]
#2  tlUser->getAccessibleTestPlans(database Object ([db] => ADODB_mysqli Object ([databaseType] => mysqli,[dataProvider] => mysql,[hasInsertID] => 1,[hasAffectedRows] => 1,[metaTablesSQL] => SELECT
			TABLE_NAME,
			CASE WHEN TABLE_TYPE = 'VIEW' THEN 'V' ELSE 'T' END
		FROM INFORMATION_SCHEMA.TABLES
		WHERE TABLE_SCHEMA=,[metaColumnsSQL] => SHOW COLUMNS FROM `%s`,[fmtTimeStamp] => 'Y-m-d H:i:s',[hasLimit] => 1,[hasMoveFirst] => 1,[hasGenID] => 1,[isoDates] => 1,[sysDate] => CURDATE(),[sysTimeStamp] => NOW(),[hasTransactions] => 1,[forceNewConnect] => 1,[poorAffectedRows] => 1,[clientFlags] => 0,[substr] => substring,[port] => 3306,[socket] => ,[_bindInputArray] => ,[nameQuote] => `,[optionFlags] => Array ([0] => Array ([0] => 5,[1] => 0)),[arrayClass] => ADORecordSet_array_mysqli,[multiQuery] => ,[_genIDSQL] => update %s set id=LAST_INSERT_ID(id+1);,[_genSeqSQL] => create table if not exists %s (id int not null),[_genSeqCountSQL] => select count(*) from %s,[_genSeq2SQL] => insert into %s values (%s),[_dropSeqSQL] => drop table if exists %s,[database] => testlink,[host] => localhost,[user] => root,[password] => not stored,[debug] => ,[maxblobsize] => 262144,[concat_operator] => +,[length] => length,[random] => rand(),[upperCase] => upper,[fmtDate] => 'Y-m-d',[true] => 1,[false] => 0,[replaceQuote] => \',[charSet] => ,[metaDatabasesSQL] => ,[uniqueOrderBy] => ,[emptyDate] =>  ,[emptyTimeStamp] =>  ,[lastInsID] => ,[hasTop] => ,[readOnly] => ,[genID] => 0,[raiseErrorFn] => ,[cacheSecs] => 3600,[memCache] => ,[memCacheHost] => ,[memCachePort] => 11211,[memCacheCompress] => ,[sysUTimeStamp] => ,[noNullStrings] => ,[numCacheHits] => 0,[numCacheMisses] => 0,[pageExecuteCountRows] => 1,[uniqueSort] => ,[leftOuter] => ,[rightOuter] => ,[ansiOuter] => ,[autoRollback] => ,[fnExecute] => ,[fnCacheExecute] => ,[blobEncodeType] => ,[rsPrefix] => ADORecordSet_,[autoCommit] => 1,[transOff] => 0,[transCnt] => 0,[fetchMode] => 2,[null2null] => null,[bulkBind] => ,[_oldRaiseFn] => ,[_transOK] => ,[_connectionID] => mysqli Object ([affected_rows] => ,[client_info] => ,[client_version] => ,[connect_errno] => ,[connect_error] => ,[errno] => ,[error] => ,[error_list] => ,[field_count] => ,[host_info] => ,[info] => ,[insert_id] => ,[server_info] => ,[server_version] => ,[stat] => ,[sqlstate] => ,[protocol_version] => ,[thread_id] => ,[warning_count] => ),[_errorMsg] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY name' at line 1,[_errorCode] => ,[_queryID] => 1,[_isPersistentConnection] => ,[_evalAll] => ,[_affected] => ,[_logsql] => ,[_transmode] => ,[*connectionParameters] => Array (),[databaseName] => testlink),[queries_array] => Array (),[is_connected] => 1,[nQuery] => 0,[overallDuration] => 0,[dbType] => mysqli,[databaselogEnabled] => 0,[databaselogQueries] => 0), 7428, ) called at [C:\wamp64\www\testlink-1.9.18\lib\functions\common.php:439]
#3  initProject(database Object ([db] => ADODB_mysqli Object ([databaseType] => mysqli,[dataProvider] => mysql,[hasInsertID] => 1,[hasAffectedRows] => 1,[metaTablesSQL] => SELECT
			TABLE_NAME,
			CASE WHEN TABLE_TYPE = 'VIEW' THEN 'V' ELSE 'T' END
		FROM INFORMATION_SCHEMA.TABLES
		WHERE TABLE_SCHEMA=,[metaColumnsSQL] => SHOW COLUMNS FROM `%s`,[fmtTimeStamp] => 'Y-m-d H:i:s',[hasLimit] => 1,[hasMoveFirst] => 1,[hasGenID] => 1,[isoDates] => 1,[sysDate] => CURDATE(),[sysTimeStamp] => NOW(),[hasTransactions] => 1,[forceNewConnect] => 1,[poorAffectedRows] => 1,[clientFlags] => 0,[substr] => substring,[port] => 3306,[socket] => ,[_bindInputArray] => ,[nameQuote] => `,[optionFlags] => Array ([0] => Array ([0] => 5,[1] => 0)),[arrayClass] => ADORecordSet_array_mysqli,[multiQuery] => ,[_genIDSQL] => update %s set id=LAST_INSERT_ID(id+1);,[_genSeqSQL] => create table if not exists %s (id int not null),[_genSeqCountSQL] => select count(*) from %s,[_genSeq2SQL] => insert into %s values (%s),[_dropSeqSQL] => drop table if exists %s,[database] => testlink,[host] => localhost,[user] => root,[password] => not stored,[debug] => ,[maxblobsize] => 262144,[concat_operator] => +,[length] => length,[random] => rand(),[upperCase] => upper,[fmtDate] => 'Y-m-d',[true] => 1,[false] => 0,[replaceQuote] => \',[charSet] => ,[metaDatabasesSQL] => ,[uniqueOrderBy] => ,[emptyDate] =>  ,[emptyTimeStamp] =>  ,[lastInsID] => ,[hasTop] => ,[readOnly] => ,[genID] => 0,[raiseErrorFn] => ,[cacheSecs] => 3600,[memCache] => ,[memCacheHost] => ,[memCachePort] => 11211,[memCacheCompress] => ,[sysUTimeStamp] => ,[noNullStrings] => ,[numCacheHits] => 0,[numCacheMisses] => 0,[pageExecuteCountRows] => 1,[uniqueSort] => ,[leftOuter] => ,[rightOuter] => ,[ansiOuter] => ,[autoRollback] => ,[fnExecute] => ,[fnCacheExecute] => ,[blobEncodeType] => ,[rsPrefix] => ADORecordSet_,[autoCommit] => 1,[transOff] => 0,[transCnt] => 0,[fetchMode] => 2,[null2null] => null,[bulkBind] => ,[_oldRaiseFn] => ,[_transOK] => ,[_connectionID] => mysqli Object ([affected_rows] => ,[client_info] => ,[client_version] => ,[connect_errno] => ,[connect_error] => ,[errno] => ,[error] => ,[error_list] => ,[field_count] => ,[host_info] => ,[info] => ,[insert_id] => ,[server_info] => ,[server_version] => ,[stat] => ,[sqlstate] => ,[protocol_version] => ,[thread_id] => ,[warning_count] => ),[_errorMsg] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY name' at line 1,[_errorCode] => ,[_queryID] => 1,[_isPersistentConnection] => ,[_evalAll] => ,[_affected] => ,[_logsql] => ,[_transmode] => ,[*connectionParameters] => Array (),[databaseName] => testlink),[queries_array] => Array (),[is_connected] => 1,[nQuery] => 0,[overallDuration] => 0,[dbType] => mysqli,[databaselogEnabled] => 0,[databaselogQueries] => 0), Array ()) called at [C:\wamp64\www\testlink-1.9.18\lib\functions\common.php:505]
#4  testlinkInitPage(database Object ([db] => ADODB_mysqli Object ([databaseType] => mysqli,[dataProvider] => mysql,[hasInsertID] => 1,[hasAffectedRows] => 1,[metaTablesSQL] => SELECT
			TABLE_NAME,
			CASE WHEN TABLE_TYPE = 'VIEW' THEN 'V' ELSE 'T' END
		FROM INFORMATION_SCHEMA.TABLES
		WHERE TABLE_SCHEMA=,[metaColumnsSQL] => SHOW COLUMNS FROM `%s`,[fmtTimeStamp] => 'Y-m-d H:i:s',[hasLimit] => 1,[hasMoveFirst] => 1,[hasGenID] => 1,[isoDates] => 1,[sysDate] => CURDATE(),[sysTimeStamp] => NOW(),[hasTransactions] => 1,[forceNewConnect] => 1,[poorAffectedRows] => 1,[clientFlags] => 0,[substr] => substring,[port] => 3306,[socket] => ,[_bindInputArray] => ,[nameQuote] => `,[optionFlags] => Array ([0] => Array ([0] => 5,[1] => 0)),[arrayClass] => ADORecordSet_array_mysqli,[multiQuery] => ,[_genIDSQL] => update %s set id=LAST_INSERT_ID(id+1);,[_genSeqSQL] => create table if not exists %s (id int not null),[_genSeqCountSQL] => select count(*) from %s,[_genSeq2SQL] => insert into %s values (%s),[_dropSeqSQL] => drop table if exists %s,[database] => testlink,[host] => localhost,[user] => root,[password] => not stored,[debug] => ,[maxblobsize] => 262144,[concat_operator] => +,[length] => length,[random] => rand(),[upperCase] => upper,[fmtDate] => 'Y-m-d',[true] => 1,[false] => 0,[replaceQuote] => \',[charSet] => ,[metaDatabasesSQL] => ,[uniqueOrderBy] => ,[emptyDate] =>  ,[emptyTimeStamp] =>  ,[lastInsID] => ,[hasTop] => ,[readOnly] => ,[genID] => 0,[raiseErrorFn] => ,[cacheSecs] => 3600,[memCache] => ,[memCacheHost] => ,[memCachePort] => 11211,[memCacheCompress] => ,[sysUTimeStamp] => ,[noNullStrings] => ,[numCacheHits] => 0,[numCacheMisses] => 0,[pageExecuteCountRows] => 1,[uniqueSort] => ,[leftOuter] => ,[rightOuter] => ,[ansiOuter] => ,[autoRollback] => ,[fnExecute] => ,[fnCacheExecute] => ,[blobEncodeType] => ,[rsPrefix] => ADORecordSet_,[autoCommit] => 1,[transOff] => 0,[transCnt] => 0,[fetchMode] => 2,[null2null] => null,[bulkBind] => ,[_oldRaiseFn] => ,[_transOK] => ,[_connectionID] => mysqli Object ([affected_rows] => ,[client_info] => ,[client_version] => ,[connect_errno] => ,[connect_error] => ,[errno] => ,[error] => ,[error_list] => ,[field_count] => ,[host_info] => ,[info] => ,[insert_id] => ,[server_info] => ,[server_version] => ,[stat] => ,[sqlstate] => ,[protocol_version] => ,[thread_id] => ,[warning_count] => ),[_errorMsg] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY name' at line 1,[_errorCode] => ,[_queryID] => 1,[_isPersistentConnection] => ,[_evalAll] => ,[_affected] => ,[_logsql] => ,[_transmode] => ,[*connectionParameters] => Array (),[databaseName] => testlink),[queries_array] => Array (),[is_connected] => 1,[nQuery] => 0,[overallDuration] => 0,[dbType] => mysqli,[databaselogEnabled] => 0,[databaselogQueries] => 0), 1) called at [C:\wamp64\www\testlink-1.9.18\lib\general\mainPage.php:20]

что я сделал не так?

После рестарта всех сопутствующих служб 1.9.17 уже пишет:

 

 

Unknown Schema version DB 1.9.18, please upgrade your Testlink Database to DB 1.9.17