* Refactor upgradeModel::fixConsistency.
This commit is contained in:
@@ -380,13 +380,14 @@ class upgradeModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* 为一致性问题执行修复sql。
|
||||
* Exec fix sql for consistency.
|
||||
*
|
||||
* @param string $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function fixConsistency($version)
|
||||
public function fixConsistency($version): void
|
||||
{
|
||||
$logFile = $this->getConsistencyLogFile();
|
||||
if(file_exists($logFile)) unlink($logFile);
|
||||
@@ -394,6 +395,9 @@ class upgradeModel extends model
|
||||
$hasError = false;
|
||||
$fixSqls = $this->checkConsistency($version);
|
||||
if($fixSqls) $fixSqls = "SET @@sql_mode= '';" . $fixSqls;
|
||||
|
||||
/* 记录执行的sql并且记录执行结果。 */
|
||||
/* Record the executed sql and the result. */
|
||||
foreach(explode(';', $fixSqls) as $fixSQL)
|
||||
{
|
||||
file_put_contents($logFile, $fixSQL, FILE_APPEND);
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 upgradeModel->addAdminInviteField();
|
||||
cid=1
|
||||
|
||||
- 判断修复一致性的sql中是否有失败执行,若有,则会记录HasError。@1
|
||||
- 判断是否成功获取了修复一致性的sql,若成功,则会设置sql_mode。@1
|
||||
- 判断是否成功的记录了修复一致性的sql。@1
|
||||
|
||||
**/
|
||||
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/upgrade.class.php';
|
||||
|
||||
$upgrade = new upgradeTest();
|
||||
|
||||
$consistencyFile = $upgrade->getConsistencyLogFile();
|
||||
if(file_exists($consistencyFile)) unlink($consistencyFile);
|
||||
|
||||
$versionList = array("18.5");
|
||||
|
||||
$upgrade->fixConsistency($versionList[0]);
|
||||
|
||||
$file = new SplFileObject($consistencyFile, 'r');
|
||||
$file->seek(PHP_INT_MAX);
|
||||
$totalLines = $file->key();
|
||||
|
||||
$file->seek($totalLines - 1);
|
||||
$error = trim($file->current()) === 'HasError';
|
||||
r($error) && p('') && e(1); //判断修复一致性的sql中是否有失败执行,若有,则会记录HasError。
|
||||
|
||||
$file->rewind();
|
||||
$firstLine = $file->current();
|
||||
r(strpos($firstLine, 'sql_mode') !== false) && p('') && e(1); //判断是否成功获取了修复一致性的sql,若成功,则会设置sql_mode。
|
||||
|
||||
$secondLinePoint = $file->seek(1);
|
||||
$secondLine = $file->current();
|
||||
$condition = trim($secondLine) === 'ALTER TABLE `zt_account` CHANGE `extra` `extra` text DEFAULT NULL';
|
||||
r($condition) && p('') && e(1); //判断是否成功的记录了修复一致性的sql。
|
||||
@@ -42,7 +42,7 @@ class upgradeTest
|
||||
*/
|
||||
public function __call(string $method, array $args): mixed
|
||||
{
|
||||
return $this->objectModel->$method($args);
|
||||
return call_user_func_array(array($this->objectModel, $method), $args);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user