လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> $ Errno-based အမှားကိုမည်သို့တည်ဆောက်ရမည်နည်း

$ Errno-based အမှားကိုမည်သို့တည်ဆောက်ရမည်နည်း

M66 2025-05-17

PHP applications များကိုတီထွင်သောအခါဒေတာဘေ့စ်လုပ်ငန်းများတည်ငြိမ်မှုသည်အလွန်အရေးကြီးသည်။ အထူးသဖြင့်မြင့်မားသောတစ်ပြိုင်နက်တည်း applicency များအရဒေတာဘေ့စ်ဆက်သွယ်မှုပြတ်တောက်မှုများကိုမည်သို့ကိုင်တွယ်ဖြေရှင်းရမည်သို့မဟုတ်အမှားအယွင်းများကိုမည်သို့ကိုင်တွယ်ဖြေရှင်းရမည်နည်း။ ဤဆောင်းပါးတွင် MySQLI :: errno ကို အသုံးပြုရမည်ကိုကျွန်ုပ်တို့လေ့လာမည်။

MySQLI :: $ errno ဆိုတာဘာလဲ။

PHP ၏ MySQLI extension တွင် $ errno attribute သည်နောက်ဆုံး MySQL စစ်ဆင်ရေး၏အမှားကုဒ်ကိုသိုလှောင်ထားသည်။ ဒေတာဘေ့စ်လုပ်ငန်းများကိုကျွန်ုပ်တို့လုပ်ဆောင်သောအခါအမှားတစ်ခုဖြစ်ပါက MySQL သည်အမှားကုဒ်တစ်ခုကိုပြန်ပို့လိမ့်မည် အမှားကုဒ်ပေါ် မူတည်. ပြန်လည်ကြိုးစားခြင်းရှိမရှိဆုံးဖြတ်နိုင်သည်။

ဇာတ်လမ်းကိုပြန်ကြိုးစားပါ

ဒေတာဘေ့စ်စစ်ဆင်ရေးများတွင်အသုံးများသောအမှားများတွင် -

  • ယာယီကွန်ရက်ပြတ်လပ်မှု

  • ဒေတာဘေ့စဆက်သွယ်မှုအရေအတွက်သည်အထက်ကန့်သတ်ချက်သို့ရောက်သည်

  • MySQL 0 န်ဆောင်မှုကိုယာယီမရနိုင်ပါ။

ဤအမှားများသည်များသောအားဖြင့်ယာယီသာဖြစ်ပြီးလျှောက်လွှာ၏တည်ငြိမ်မှုကိုသင့်လျော်သောပြန်လည်ထူထောင်ရေးနည်းဗျူဟာများဖြင့်တိုးတက်စေနိုင်သည်။ အကယ်. သင်သည်အမှားအယွင်းကိုလျင်မြန်စွာဆုံးဖြတ်ရန်နှင့်အချိန်တန်လျှင်ပြန်လည်ကြိုးစားပါက၎င်းသည်ရံဖန်ရံခါအမှားများကြောင့်ဒေတာဘေ့စ်စစ်ဆင်ရေးပျက်ကွက်မှု၏အခွင့်အရေးကိုများစွာလျှော့ချနိုင်သည်။

build erry ကိုပြန်ကြိုးစားပါ

နောက်တစ်ခုက MySQLI :: $ errno အပေါ် အခြေခံ. အမှားလုပ်စရာနည်းလမ်းကိုကျွန်ုပ်တို့အကောင်အထည်ဖော်မည်။ ကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန်ကြိုးစားပါမည်။ ဆက်သွယ်မှုပျက်ကွက်လျှင်ထပ်မံကြိုးစားပါမည်။

 <?php
// ဒေတာဘေ့စ် connection parameters တွေကိုသတ်မှတ်ပါ
$host = 'localhost';
$username = 'root';
$password = '';
$database = 'test_db';

// Retry Times အများဆုံးအရေအတွက်ကိုသတ်မှတ်ပါ
$maxRetries = 3;
$retryInterval = 2; // ကြားကာလအချိန်ကိုပြန်ကြိုးစားပါ(စက်ဏန့်)

// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ
function createConnection($host, $username, $password, $database) {
    $connection = new mysqli($host, $username, $password, $database);
    
    // ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
    if ($connection->connect_error) {
        echo "ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $connection->connect_error . "\n";
        return false;
    }
    return $connection;
}

// ချိတ်ဆက်ပြီးထပ်ကြိုးစားပါ
function tryConnection($host, $username, $password, $database, $maxRetries, $retryInterval) {
    $retries = 0;
    $connection = null;
    
    while ($retries < $maxRetries) {
        $connection = createConnection($host, $username, $password, $database);
        if ($connection) {
            // အောင်မြင်စွာဆက်သွယ်မှု,ဆက်သွယ်မှုအရာဝတ်ထုသို့ပြန်သွားပါ
            return $connection;
        }
        
        // အမှားကုဒ်ကိုရယူပါ
        $errno = $connection->connect_errno;
        
        // ၎င်းသည်အမှားကုဒ်အပေါ် အခြေခံ. ယာယီအမှားရှိမရှိဆုံးဖြတ်ပါ
        if ($errno == 2002 || $errno == 1040) {
            // ဥပမာအားဖြင့်:2002ဒေတာဘေ့စ်ဆာဗာချိတ်ဆက်မရနိုင်ပါ,1040ဒေတာဘေ့စ်ဆက်သွယ်မှုများစွာရှိကြောင်းဖော်ပြသည်
            echo "数据库ဆက်သွယ်မှုမအောင်မြင်ပါ,နောက်တဖန်ကြိုးစားနေ...(အမှားကုဒ်:$errno)\n";
            $retries++;
            sleep($retryInterval); // နောက်တဖန်မကြိုးစားမီခဏစောင့်ပါ
        } else {
            // အမှားအခြားအမျိုးအစားဖြစ်ပါတယ်လျှင်,Retry အဆုံးသတ်
            echo "ဆက်သွယ်မှုမအောင်မြင်ပါ,အမှားကုဒ်:$errno\n";
            break;
        }
    }
    
    if ($retries == $maxRetries) {
        echo "အများဆုံး retryes ရောက်ရှိလာခဲ့,ဒေတာဘေ့စကို ဆက်သွယ်. မရပါ。\n";
        return null;
    }
    
    return $connection;
}

// Retry function ကိုခေါ်ပါ
$connection = tryConnection($host, $username, $password, $database, $maxRetries, $retryInterval);
if ($connection) {
    echo "数据库အောင်မြင်စွာဆက်သွယ်မှု!\n";
    // အခြားဒေတာဘေ့စ်စစ်ဆင်ရေးကိုလုပ်ဆောင်ပါ...
} else {
    echo "ဒေတာဘေ့စကို ဆက်သွယ်. မရပါ,ကျေးဇူးပြု. နောက်မှထပ်ကြိုးစားပါ。\n";
}
?>

ကုဒ်ကိုရှင်းပြပါ

  1. Connection function createConnection () - ဤလုပ်ဆောင်မှုကို MySQL ဒေတာဘေ့စ် connection တစ်ခုကိုဖန်တီးရန်နှင့် Connection Object ကိုပြန်ပို့ရန်အသုံးပြုသည်။ ဆက်သွယ်မှုပျက်သွားလျှင် မှားယွင်းစွာ ပြန်လာသည်။

  2. retry function tryconnection () : ဒီ function ကိုအတွက်, ကျနော်တို့ပြန်လည်ကြိုးစားမှုယန္တရားကိုအကောင်အထည်ဖော်ရန်။ ၎င်းသည်ဒေတာဘေ့စ်ကိုချိတ်ဆက်ရန်ကြိုးစားလိမ့်မည်။ ဆက်သွယ်မှုပျက်ကွက်ပါကအမှားကုဒ်အပေါ် မူတည်. ပြန်လည်ကြိုးစားခြင်းရှိမရှိဆုံးဖြတ်လိမ့်မည်။ Connect_ERRNO ကို အသုံးပြု. အမှားကုဒ်များကိုရရန်နှင့်၎င်းသည်ယာယီဆက်သွယ်မှုအမှား (ဥပမာ, ဒေတာဘေ့စ်များစသည်တို့စသည်တို့စသည်တို့) ဟုတ်မဟုတ်စစ်ဆေးသည်။ သို့ဆိုလျှင်အမြင့်ဆုံးပြန်ကြိုးစားမှုအရေအတွက်မရောက်မှီတိုင်အောင်ခဏမကြိုးစားမီခဏစောင့်ပါမည်။

  3. အမှားကုဒ်၏တရားစီရင်ချက် -

    • အမှားကုဒ် 2002 တွင် ဒေတာဘေ့စ်ဆာဗာ ချိတ်ဆက်. မရပါဟုဖော်ပြသည်။

    • အမှားကုဒ် 1040 သည်ဒေတာဘေ့စ်ဆက်သွယ်မှုများစွာရှိကြောင်းဖော်ပြသည်။

နောက်ထပ်အကောင်းမြင်

ကွဲပြားခြားနားသောအမှားများနှင့် ပတ်သက်. ဆုံးဖြတ်ချက်များကိုပိုမိုထိရောက်သောဆုံးဖြတ်ချက်များကိုပိုမိုဆိုးရှားစေသည့်အတွက်အမှားအယွင်းများဖြင့်တရားစွဲဆိုမှုများပြုလုပ်နိုင်သည်။ ဥပမာအားဖြင့်:

  • Error Code 2003 - MySQL server နှင့်ဆက်သွယ်မှုကိုလက်လှမ်းမမီပါသို့မဟုတ်ဆာဗာကိုမစတင်ပါ။

  • အမှားကုဒ် 1045 : အသုံးပြုသူအမည်သို့မဟုတ်စကားဝှက်မှားကြောင်းဖော်ပြသည်။ ဤသည်ရှင်းလင်းပြတ်သားစွာ configuration အမှားတစ်ခုဖြစ်ပြီးပြန်မရသင့်ပါ။

အမှားကုဒ်တစ်ခုစီအတွက်ကျွန်ုပ်တို့သည်ကွဲပြားသော Retry Interval ကိုသတ်မှတ်နိုင်သည်,

အကျဉ်းချုပ်

MySQLI :: $ errno ကို အသုံးပြု. ဒေတာဘေ့စ်လည်ပတ်မှုအမှားအယွင်းများကိုဆုံးဖြတ်ရန်အတွက်ကျွန်ုပ်တို့သည်ကွန်ယက်ပြတ်တောက်မှုများသို့မဟုတ်ယာယီအမှားများကြောင့်ဖြစ်ပေါ်သောဒေတာဘေ့စ်၏ဆက်သွယ်မှုပျက်ကွက်မှုကိုရှောင်ရှားရန်ထိရောက်သောအမှားလုပ်စရာယန္တရားကိုအကောင်အထည်ဖော်နိုင်သည်။ ကျိုးကြောင်းဆီလျော်စွာပြန်လည်နေရာချထားချိန်ကိုပြန်လည်သတ်မှတ်ခြင်းနှင့်ပြန်လည်ပြုပြင်ခြင်းကြားကာလသည်အထူးသဖြင့်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းပတ်ဝန်းကျင်တွင်ဒေတာဘေ့စ်လုပ်ငန်းများတည်ငြိမ်မှုကိုထိရောက်စွာတိုးတက်စေနိုင်သည်။ ဤကျွမ်းကျင်မှုများဖြင့်ကျွမ်းကျင်မှုများဖြင့်လျှောက်လွှာနှင့်ဒေတာဘေ့စ်အကြားအပြန်အလှန်ဆက်သွယ်မှုကိုသင်ပိုမိုကောင်းမွန်စွာထိန်းချုပ်နိုင်ပြီးစနစ်၏ယုံကြည်စိတ်ချရမှုကိုသေချာစေနိုင်သည်။