PHP တွင် MySQLI ၏ ဆက်သွယ်မှု () function (သို့မဟုတ် mySqli_connect) ၏ function (သို့မဟုတ် STSQLI_Connect ) တွင်ဒေတာဘေ့စ်ဆက်သွယ်မှုများကိုအကောင်အထည်ဖော်ရာတွင်အဓိကခြေလှမ်းဖြစ်သည်။ Connection ပျက်ကွက်ခြင်းသည်ဖွံ့ဖြိုးရေးတွင်ဘုံပြ problem နာဖြစ်သည်, အထူးသဖြင့်အစပြုသူများအတွက်ပြ esh နာဖြေရှင်းခြင်းပြ problems နာများကိုဖြေရှင်းနိုင်သည်။ ဤဆောင်းပါးသည် connection ပျက်ကွက်မှု၏အဓိကအကြောင်းရင်းဆယ်ခုကိုပိုမိုသိရှိပြီးပြ problems နာများကိုပိုမိုမြန်ဆန်စွာရှာဖွေရန်ကူညီရန်သက်ဆိုင်ရာဖြေရှင်းနည်းများကိုအသေးစိတ်လေ့လာလိမ့်မည်။
အကြောင်းပြချက် - Connect () function ကို () function ကို () function ကို) function တွင် function တွင် function ကိုမှားယွင်းစွာဖြည့်ထားသည်။
ဖြေရှင်းချက် -
ဒေတာဘေ့စ်ဆာဗာလိပ်စာမှန်ကန်မှုရှိမရှိအတည်ပြုပါ။ ဥပမာအားဖြင့်, ရေးရန်မှန်ကန်သောနည်းလမ်းမှာဆင်တူသင့်သည်။
$conn = mysqli_connect('m66.net', 'username', 'password', 'database');
အကယ်. ဒေတာဗေ့စ်သည်ဒေသခံစက်ပေါ်တွင်ရှိခဲ့လျှင် '127.0.0.1.1' သို့မဟုတ် 'localhost' ကို အသုံးပြုရန်အကြံပြုသည်။
အကြောင်းရင်း - ဒေတာဘေ့စ်အကောင့်တစ်ခုသို့မဟုတ်စကားဝှက်သည်မှားယွင်းစွာဖြည့်စွက်ပြီး,
ဖြေရှင်းချက် -
$conn = mysqli_connect('m66.net', 'အသုံးပြုသူအမည်မှန်ကန်သော', 'စကားဝှက်မှန်', 'ဒေတာဘေ့စ်အမည်');
if (!$conn) {
die('ဆက်သွယ်မှုမအောင်မြင်ပါ,အမှားသတင်းစကား:' . mysqli_connect_error());
}
အသုံးပြုသူအမည်နှင့်စကားဝှက်သည်မှန်ကန်ပြီးလက်လှမ်းမီမှုအခွင့်အရေးများရှိကြောင်းသေချာစေပါ။
အကြောင်းရင်း - MySQL သို့မဟုတ်အခြားဒေတာဘေ့စ် 0 န်ဆောင်မှုသည်မပြေးနိုင်ပါ။
ဖြေရှင်းချက် -
ဒေတာဘေ့စ်ဝန်ဆောင်မှုစတင်ခဲ့ကြောင်းအတည်ပြုပါ။ command line မှတဆင့်ကွပ်မျက်နိုင်ပါတယ်:
sudo service mysql status
သို့မဟုတ် 0 န်ဆောင်မှုကိုစတင်ရန် System ၏ 0 န်ဆောင်မှုစီမံခန့်ခွဲမှုကိရိယာကိုသုံးပါ။
အကြောင်းမရှိ: Firewall သည်ဒေတာဘေ့စ်ဆိပ်ကမ်းသို့ပိတ်ထားသည် (ပုံမှန် 3306) ။
ဖြေရှင်းချက် -
Port 3306 (သို့မဟုတ်ထုံးစံ port) ကိုဖွင့်ရန်သေချာစေရန်ဆာဗာ firewall settings ကိုစစ်ဆေးပါ။ အများအားဖြင့်အသုံးပြုသော command များ:
sudo ufw allow 3306
Cloud ဆာဗာများသည်လုံခြုံရေးအုပ်စုစည်းမျဉ်းများကိုလည်းပြုပြင်ရန်လိုအပ်သည်။
အကြောင်းရင်း - ချိတ်ဆက်မှုတွင် port နံပါတ်မှားသည်။
ဖြေရှင်းချက် -
Default Port သည် 3306 ဖြစ်သည်။ ဒေတာဘေ့စ်သည်ထုံးစံ port ကိုအသုံးပြုပါကရှင်းရှင်းလင်းလင်းဖော်ပြရန်လိုအပ်သည်။
$conn = mysqli_connect('m66.net', 'username', 'password', 'database', 3307);
အကြောင်းမှာ - အသုံးပြုသူသည်ဒေတာဘေ့စ်ကိုလက်ရှိအိမ်ရှင်မှဝင်ရောက်ရန်အခွင့်အာဏာမရှိပါ။
ဖြေရှင်းချက် -
ဒေတာဗေ့စ်သို့ ဝင်ရောက်. ခွင့်ပြုချက်အမိန့်ကို execute လုပ်ပါ။
GRANT ALL PRIVILEGES ON database.* TO 'username'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
ဤတွင် '%' ဆိုသည်မှာမည်သည့် host ကိုမဆိုဝင်ရောက်ခွင့်ပြုသည်။
အကြောင်းရင်း - MySQLI သို့မဟုတ် PDO သက်တမ်းတိုးခြင်းကို PHP ပတ်ဝန်းကျင်တွင်တပ်ဆင်ထားခြင်းမရှိပါ။ သို့မဟုတ်မူကွဲသည်မကိုက်ညီပါ။
ဖြေရှင်းချက် -
PHP ပတ် 0 န်းကျင်သည်သက်ဆိုင်ရာ extension များကိုမှန်ကန်စွာတပ်ဆင်ခြင်းရှိမရှိစစ်ဆေးပါ။
php -m | grep mysqli
ထည့်သွင်းခြင်းမရှိသေးပါကသင်ထည့်သွင်းရန် Package Manager ကိုအသုံးပြုရန်လိုအပ်သည်။
sudo apt-get install php-mysqli
အကြောင်းရင်း - ကွန်ယက်နှောင့်နှေးခြင်းသို့မဟုတ်မတည်ငြိမ်မှု, ဆက်သွယ်မှုတောင်းဆိုမှုသည်အချိန်ကုန်သက်သာစေသည်။
ဖြေရှင်းချက် -
ဒေတာဘေ့စ်ဆာဗာကို pinging လုပ်ပြီးကွန်ယက်သည်ချောမွေ့ကြောင်းအတည်ပြုပါ။
ping m66.net
ကွန်ယက်ပတ် 0 န်းကျင်ကိုပိုမိုကောင်းမွန်စေပါသို့မဟုတ်လိုအပ်ပါက connection timeout ချိန်ညှိချက်များကိုထည့်ပါ။
အကြောင်းရင်း - ဒိုမိန်းအမည်ကိုမှန်ကန်စွာ ဖြေရှင်း. မရပါ,
ဖြေရှင်းချက် -
IP လိပ်စာနှင့်ချိတ်ဆက်ပါသို့မဟုတ်ဇာတိ DNS Configuration ကိုစစ်ဆေးပါ။
$conn = mysqli_connect('192.168.1.100', 'username', 'password', 'database');
အကြောင်းမှာ: ဆာဗာ၏ဒေတာဘေ့စ်ဗားရှင်းသည် connection methods အချို့သို့မဟုတ် My.CNF ကဲ့သို့သော configuration files များကိုကန့်သတ်ထားသည်။
ဖြေရှင်းချက် -
ဒေတာဘေ့စ် configuration ဖိုင်ကိုစစ်ဆေးပြီး Binding လိပ်စာကိုအတည်ပြုပါ။
bind-address = 0.0.0.0
IP ဆက်သွယ်မှုအားလုံးကိုဒေတာဘေ့စ် 0 န်ဆောင်မှုကိုပြန်လည်စတင်ပြီးနောက်ခွင့်ပြုပြီးထိရောက်စွာထိရောက်စွာခွင့်ပြုသည်။