테스트 사이트 - 개발 중인 베타 버전입니다

2개의 DB에 그누보드가 설치되었을 때 변경된 칼럼비교 (g5로 시작되는 테이블만 일단!)

· 7년 전 · 2378 · 1

팁게에 거의 글을 남기지 않다보니 syntax highlight 이용법이 영 서툰 것을 용서해주시기 바랍니다. 

이번에 5.3베타에서 5.3정식으로 교체할 일이 생겨 혹여나 베타로만든 홈페이지의 DB와 정식으로 만든 홈페이지의 DB의 구조가 달라 오류가 생길까 미리 미연에 방지하는 차원에서 두 DB에 각각 설치된 그누보드의 구조를 비교해서 틀린 것이 있으면 뿌려주는 소스입니다. 

 

(디비명과 테이블명을 넣으면 칼럼들을 반환해주는 함수를 만들어서 반환받은 배열변수를 비교해서 차이가 나면 뿌려주는 심플한... )

 

러프한 부족한 소스를 아량으로 이해해주시기를 바라며... 

 

(* 루프돌 때 기준은 5.3정식 테이블을 기준으로 루프를 돌도록 했습니다.)

 

[code]

<?php
/**
 * Created by PhpStorm.
 * User: SDG
 * Date: 2018-04-30
 * Time: 오후 10:24
 */
include_once "../../common.php";
//print_r2($g5);
$link1 = mysqli_connect("localhost", "DB유저", "DB비번1", "DB명1");
$link2 = mysqli_connect("localhost", "DB유저", "DB비번2", "DB명2");
// g5로 시작하는 모든 테이블 스키마 출력 (배열로)
function getArrG5Table($dbName, $link)
{
    $rIdx = "Tables_in_{$dbName}";
    $arr = array();
// sql_query("use {$dbName}", true, $link);
    $query = "show tables where Tables_in_{$dbName} like 'g5_%'";
    $result = sql_query($query, true, $link);
    while ($row = sql_fetch_array($result)) {
// print_r2($row[$rIdx]);
// echo "<br>";
        $query2 = "desc {$row[$rIdx]}";
        $result2 = sql_query($query2, true, $link);
        while ($row2 = sql_fetch_array($result2)) {
// echo $row2["Field"];
// print_r2($row2);
            $arr[$row[$rIdx]][] = $row2["Field"];
        }
// echo "<hr>";
    }
//print_r2($arr);
    return $arr;
// 일단 추가된 테이블이 있는지 없는지 비교도 필요하다.
//테이블명을 모두 배열에 넣고 비교를 하는거다.
//
}

$arrBeta = getArrG5Table("DB명1", $link1);
$arrCurr = getArrG5Table("DB명2", $link2);
ksort($arrBeta);
ksort($arrCurr);
// 칼럼 비교
foreach ($arrCurr as $key => $value) {
    $diff = array_diff($arrBeta[$key], $arrCurr[$key]);
    if ($diff) {
        echo "<h2>table 이름: {$key}</h2> ";
// print_r2($arrCurr[$key]);
// print_r2($arrBeta[$key]);
        echo "<h3>차이</h3>";
        print_r2($diff);
        echo "<hr>";
    }
    unset($diff);
//
}

[/code]

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 1개

고맙습니다

게시글 목록

번호 제목
16019
16015
16014
16013
16011
16010
16009
16008
16004
16003
16002
16001
15993
15992
15991
15988
15987
15986
15985
15981
15980
15979
15978
15977
15976
15975
15974
15973
15971
15970