ဖြန့်ဖြူးထားသောဒေတာဘေ့စ်ဗိသုကာလက်ရာတွင်စနစ်၏ကြံ့ခိုင်မှုနှင့်ယုံကြည်စိတ်ချရမှုကိုသေချာစေရန်အထူးသဖြင့်ဒေတာဘေ့စ် node များနှင့်ဆက်ဆံရာတွင်မည်သို့ထိရောက်စွာကိုင်တွယ်ဖြေရှင်းနိုင်ခြင်းနှင့် Debug အမှားများကိုထိရောက်စွာကိုင်တွယ်ဖြေရှင်းနိုင်ရန်အတွက်စနစ်၏ကြံ့ခိုင်မှုနှင့်ယုံကြည်စိတ်ချရမှုကိုသေချာစေသည်။ PHP ၏ MySQLI extension သည် developer များကိုကြွယ်ဝသောဒေတာဘေ့ စ် စစ်ဆင်ရေးလုပ်ငန်းများနှင့်အတူ developer များကိုထောက်ပံ့ပေးသည်။
ဤဆောင်းပါးသည် MySQLI :: $ errno function ကိုအသုံးပြုရမည်ကိုရှာဖွေတွေ့ရှိနိုင်ပြီး Datribging Database ဗိသုကာတွင်အမှားအယွင်းများကိုထိရောက်စွာကိုင်တွယ်နိုင်ရန်အတွက်လက်တွေ့ကျကျကိစ္စအချို့ကိုရှာဖွေရန်နည်းဗျူဟာများကိုမည်သို့ကောင်းမွန်အောင်ပြုလုပ်ရမည်ကိုရှင်းပြရန်လက်တွေ့ကျကျကိစ္စများကိုပေါင်းစပ်ပါ။
MySQLI :: $ errno သည် PHP MySQLI extension တွင် SQL query query ကိုအကောင်အထည်ဖော်ခဲ့သောအမှားကုဒ်ကိုကိုယ်စားပြုသည့် PHP MySQLI extension ၏ပိုင်ဆိုင်မှုတစ်ခုဖြစ်သည်။ ၎င်းသည်ကိန်းဂဏန်းတစ်ခုဖြစ်ပြီးအမှားမရှိပါက 0 သည် 0 သို့ပြန်လာသည်။ ဤပိုင်ဆိုင်မှုကို mySqli :: $ အမှားအယွင်းများကို အသုံးပြု လေ့ရှိသည်။
ဖြန့်ဖြူးထားသောဒေတာဘေ့စ်ဗိသုကာလက်ရာတွင်ဒေတာများကိုဆာဗာများသို့မဟုတ် node များပေါ်တွင်ကွဲပြားသောအချက်အလက်များကိုသိမ်းဆည်းထားသည်။ ဘုံစိန်ခေါ်မှုများတွင် -
ကွန်ယက်နှောင့်နှေးသို့မဟုတ် packet ဆုံးရှုံးမှု
မတည်ငြိမ်သောဒေတာဘေ့စ်ဆက်သွယ်မှု
node ကိုပျက်ကွက်သို့မဟုတ်ကျချိန်
ဒေတာဘေ့စ် node များပြန်လည်နေရာချထားခြင်းကြောင့် Node တစ်ခုတွင်ပြ a နာတစ်ခုတွင်ပြ a နာတစ်ခုတွင်ပြ a နာတစ်ခုဖြစ်သောအခါ၎င်းသည်စနစ်တစ်ခုလုံးတွင်ပုံမှန်မဟုတ်သောအရာများကိုဖြစ်ပေါ်စေနိုင်သည်။ ထို့ကြောင့် Database စစ်ဆင်ရေးတစ်ခုစီတွင်အချိန်ကာလတစ်ခုအတွင်းအမှားများကိုရှာဖွေရန်နှင့်ကိုင်တွယ်နိုင်ခြင်းသည်စနစ်တည်ငြိမ်မှုကိုသေချာစေရန်သော့ချက်ဖြစ်သည်။
MySQLI :: $ errno သည် ဒေတာဘေ့စ်လုပ်ငန်းများ၌အမှားရှာဖွေခြင်းကိုလုပ်ဆောင်ရန်ကူညီနိုင်သည်။ ဖြန့်ဝေထားသောဒေတာဘေ့စ်များနှင့်ဆက်ဆံရာတွင်တစ် ဦး ချင်းစီနာခု၏အောင်မြင်မှုများကိုချက်ချင်းသတိမပြုမိနိုင်ပါ။ ဒေ တာ ဘေ့စ်စစ်ဆင်ရေးတစ်ခုစီသည်အမှားအယွင်းများကိုဖမ်းရန်လိုအပ်သည်။
<?php
// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ
$mysqli = new mysqli('m66.net', 'user', 'password', 'database');
// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($mysqli->connect_errno) {
echo "ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error;
exit();
}
// တစ် ဦး စုံစမ်းမှု execute
$query = "SELECT * FROM users";
$result = $mysqli->query($query);
// အမှားကိုင်တွယ်
if ($mysqli->errno) {
echo "စုံစမ်းမှုမအောင်မြင်ပါ: " . $mysqli->error;
} else {
// လုပ်ငန်းစဉ်မေးမြန်းချက်ရလဒ်များ
while ($row = $result->fetch_assoc()) {
echo $row['name'] . "\n";
}
}
$mysqli->close();
?>
အထက်ပါကုဒ်တွင် MySQLI :: အမှားတစ်ခုရှိမရှိစစ်ဆေးရန်ပထမ ဦး ဆုံး MySQLI :: errno ကို အသုံးပြုသည်။ အကယ်. စုံစမ်းမှုပျက်ကွက်ပါက MySQLI :: $ အမှားအယွင်းများ မှတစ်ဆင့်အသေးစိတ်အချက်အလက်များကိုထုတ်ဖော်ပြောဆိုနိုင်သည်။
ဖြန့်ဖြူးထားသောဒေတာဘေ့စ်တွင်ပြ the နာသည်ဒေတာဘေ့စ် node တစ်ခုတည်းမှသာလာနိုင်သည်။ ဥပမာအားဖြင့်, စုံစမ်းမှုကိုမှားယွင်းသော node သို့မဟုတ်ကွန်ယက်မတည်ငြိမ်မှုကြောင့်ဖြစ်ရတဲ့အချိန်ကုန်အမှားကိုလမ်းကြောင်းမှန်ပေါ်သို့ရောက်သွားနိုင်သည်။ ဤကိစ္စတွင်ရိုးရှင်းသောအမှားစစ်ဆေးခြင်းသည်ပြ problem နာကိုထိရောက်စွာရှာရန်မလုံလောက်ပါ, ထို့ကြောင့်ကျွန်ုပ်တို့သည်ပိုမိုအဆင့်မြင့် debugging မဟာဗျူဟာလိုအပ်သည်။
ဖြန့်ဝေထားသောစနစ်များတွင်ဒေတာဘေ့စ်လည်ပတ်မှုတစ်ခုစီ၏အသေးစိတ်အချက်အလက်များနှင့်မှတ်တမ်းများကိုရိုက်ကူးခြင်းနှင့်မှတ်တမ်းတင်ရန်နှင့်မှတ်တမ်းတင်ရန်အလွန်အရေးကြီးသည်။ အမှားမက်ဆေ့ခ်ျကို logging မှတဆင့် Central Log System သို့ Centry Log System သို့ပို့နိုင်သည်။
<?php
function logError($errno, $error) {
// မှတ်တမ်းတင်ရန်အမှားများကိုမှတ်တမ်းတင်ပါ
file_put_contents('/path/to/error.log', date('Y-m-d H:i:s') . " အမှားကုဒ်: $errno, အမှားသတင်းစကား: $error\n", FILE_APPEND);
}
$mysqli = new mysqli('m66.net', 'user', 'password', 'database');
if ($mysqli->connect_errno) {
logError($mysqli->connect_errno, $mysqli->connect_error);
exit();
}
$query = "SELECT * FROM orders";
$result = $mysqli->query($query);
if ($mysqli->errno) {
logError($mysqli->errno, $mysqli->error);
} else {
while ($row = $result->fetch_assoc()) {
echo $row['order_id'] . "\n";
}
}
$mysqli->close();
?>
Logging မှတစ်ဆင့်ကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်လုပ်ငန်းများမှအမှားများကိုခြေရာခံနိုင်ပြီးဤမှတ်တမ်းများသည်ဖြန့်ဝေထားသောဒေတာဘေ့စ် Schema တွင်ပေါ်ပေါက်လာသောပြ problems နာများကိုရှာဖွေတွေ့ရှိနိုင်သည်။
ဖြန့်ဖြူးထားသောစနစ်တွင် node တစ်ခု၏ပျက်ကွက်မှုသည်စနစ်တစ်ခုလုံး၏လုပ်ဆောင်မှုကိုမထိခိုက်သင့်ပါ။ MySQLI :: $ errno error code ကို သုံး. အမှားအယွင်းများခွဲထွက်ရေးမဟာဗျူဟာများကိုဒီဇိုင်းပြုလုပ်နိုင်သည်။ ဥပမာအားဖြင့်, အကယ်. node တစ်ခုသည်အချိန်ကုန်အမှားတစ်ခုကြုံတွေ့ရပါကတောင်းဆိုမှုကိုကျွန်ုပ်တို့အလိုအလျောက်ပြန်လည်ရယူနိုင်ရန်သို့မဟုတ်အပြောင်းအလဲနဲ့အရန်ကူးယူသည့် node တစ်ခုသို့ပြောင်းနိုင်သည်။
<?php
function handleDatabaseError($errno, $error) {
if ($errno == 2002) { // ဆက်သွယ်မှုအချိန်ကုန်အမှား
// standby node ကိုပြောင်းပါ
echo "ဆက်သွယ်မှုအချိန်ကုန်,backup node ကိုစမ်းကြည့်ပါ...\n";
} else {
echo "ဒေတာဘေ့စ်အမှား: $error\n";
}
}
$mysqli = new mysqli('m66.net', 'user', 'password', 'database');
if ($mysqli->connect_errno) {
handleDatabaseError($mysqli->connect_errno, $mysqli->connect_error);
exit();
}
$query = "SELECT * FROM products";
$result = $mysqli->query($query);
if ($mysqli->errno) {
handleDatabaseError($mysqli->errno, $mysqli->error);
} else {
while ($row = $result->fetch_assoc()) {
echo $row['product_name'] . "\n";
}
}
$mysqli->close();
?>
ဤဥပမာတွင် MySQLI :: errno အမှားကုဒ်ကိုစစ်ဆေးသည်။ connection tinout error ( errout == 2002 ) ကိုကျွန်ုပ်တို့တောင်းဆိုမှုကို standby database node သို့ရောက်သွားသည်။
ဖြန့်ဖြူးထားသောဒေတာဘေ့စ်ဗိသုကာလက်ရာတွင် MySQLI :: အမှားကိုင်တွယ်ခြင်းအတွက် $ errno function ကို အသုံးပြု. Debugging သည် System အားကောင်းလာစေရန်အရေးကြီးသောနည်းလမ်းတစ်ခုဖြစ်သည်။ အမှားကုဒ်များကိုထိရောက်စွာဖမ်းယူခြင်းနှင့်ခွဲခြမ်းစိတ်ဖြာခြင်းအားဖြင့် developer များသည်ပြ problems နာများကိုလျင်မြန်စွာရှာဖွေပြီးပျက်ကွက်မှုများ၏သက်ရောက်မှုကိုလျှော့ချနိုင်သည်။ logging, အမှားကုဒ်ပြုပြင်ခြင်းနှင့်အမှားအထီးကျန်ခြင်းမူဝါဒများပေါင်းစပ်ခြင်း, စနစ်၏မြင့်မားသောရရှိနိုင်မှုကိုသေချာစေရန်စနစ်တွင်ပြ problems နာများပေါ်ပေါက်လာသောအခါပြ problems နာများပေါ်ပေါက်လာသည့်အခါကျွန်ုပ်တို့လျင်မြန်စွာတုံ့ပြန်နိုင်သည်။
ဖြန့်ဖြူးထားသောဒေတာဘေ့စ်ဗိသုကာများ၏ရှုပ်ထွေးမှုသည်ဒီဇိုင်းရေးဆွဲသည့်အခါကိုင်တွယ်ဖြေရှင်းနိုင်သည့်အမှားအယွင်းများနှင့်ပြောင်းလွယ်ပြင်လွယ်မှုကိုစဉ်းစားရန်ကျွန်ုပ်တို့လိုအပ်သည်။ အမှားတစ်ခုဖြစ်ပေါ်သောအခါပြ problems နာများကိုလျင်မြန်စွာနေရာချထားခြင်းနှင့်ဖြေရှင်းခြင်းအားဖြင့်သာစနစ်တည်ငြိမ်မှုကိုသေချာစေနိုင်ပါမည်။