آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

کمک کنید خطای mysqli::__construct(): (HY000/2002): دارم حل نمیشه

سید روح اله حسینی  3 سال پیش  3 سال پیش
+1 0

سلام

من wampserver 3.2.0  را نصب کردم و که از دو سرویس mysql و  MariaDB استفاده میکنه . و کدها طبق آموزش است ولی زمان register  یا login با خطای زیر مواجه میشم لطفا را هنمایی کنید:

http://project.uncox.local/framework/user/login

Warning: mysqli::__construct(): (HY000/2002): No connection could be made because the target machine actively refused it. in F:\devs\workspace\web\framework\system\db.php on line 31

Connection failed: No connection could be made because the target machine actively refused it.

در تنظیمات config => userDB را project یا root می گذارم چه با پسورد چه بدون پسورد به هیچ عنوان وصل نمی شه ....

config.php


<?
//define('test', true);
if(!defined('test')){
echo "Forbiden Reguest";
exit;
}
global $config;
$config['db']['host'] = 'localhost';
$config['db']['user'] = 'project';
$config['db']['pass'] = '123456';
$config['db']['name'] = 'project_notes';

$config['lang'] = 'fa';

$config['salt'] = 'km4569km3455gy8j46sc3259f';








db.php


<?
class Db{
private $connection;

private static $db;

//Design pattern singleTon

public static function getInstance($option = null){
if (self::$db == null){
self::$db = new Db($option);
}

return self::$db;
}

private function __construct($option = null){
if($option != null){
$host = $option['host'];
$user = $option['user'];
$pass = $option['pass'];
$name = $option['name'];
}else{
global $config;
$host = $config['db']['host'];
$user = $config['db']['user'];
$pass = $config['db']['pass'];
$name = $config['db']['name'];
}
// Create connection
$this->connection = new mysqli($host, $user, $pass, $name);
// Check connection
if ($this->connection->connect_error) {
echo "Connection failed: " . $this->connection->connect_error;
exit;
}

 برای این سوال 1 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
+2 0

 پاسخ صحیح

متاسفانه 14 ساعت بعد از مطرح کردن سوال فوق و عدم پاسخگویی از جانب مدیران و مسئولان انجمن با تحقیقی که کردم ایراد مشکل را متوجه شدم . شما اگر از wamp server ورژن 3.0.8 به بالا استفاده میکنید باید نکات زیر را رعایت کنید : ( وگر نه با خطا mysqli::__construct(): (HY000/2002): No connection could be made because the target machine actively refused it. روبرو میشوید :

اول توضیحات لازم را میدم بعدا راه حل را میگم :

  • ----- MySQL and MariaDB -----
  1. wampserver ورژن 3.0.8 به بالا دارای 2 پایگاه داده MySQL , MariaDB می باشند و پشتیبانی می شوند
  2. MySQL از ابتدای Wampserver پشتیبانی می شود
    MariaDB توسط Wampserver 3.0.8 و بالاتر پشتیبانی می شود
  3. نسبت به بسته نصبی کامل  wampserver مدیریت پیش فرض پایگاه داده  MySQL یا MariaDB می باشد.
  4. اگر MySQL مدیر پیش فرض باشد از پورت 3306 استفاده می کند که در این صورت MariaDB از پورت 3307 استفاده می کند.
    اگر MariaDB مدیر پیش فرض باشد از پورت 3306 استفاده می کند که در این صورت MySQL از پورت 3308 استفاده می کند.
  • --- PhpMyAdmin
  1. PhpMyAdmin برای استفاده از MySQL یا MariaDB پیکربندی شده است.
  2. شما به آدرس http://localhost/phpmyadmin/ می روید .
  3. چگونه زمان اتصال و فراخوانی انتخاب سرور از منو کشویی Server Choice: قابل انتخاب می باشد.
  4. Server Choice: MySQL AND  MariaDB
  5. سرور پیش فرض اولین نامی که شما در منو می بینید نمایان است. ( مثلا : Server Choice: MariaDB )
  • --- اتصال به بانک اطلاعاتی توسط MariaDB یا MySQL
  1. برای اینکه اتصالات شما به یک سرور پایگاه داده با MariaDB یا MySQL برقرار شود ، اگر پورت پیش فرض 3306 نباشد ، باید پورت را مشخص کنید. در واقع ، بدون مشخص کردن پورت ، این پورت پیش فرض مورد استفاده خواهد بود 3306
    استفاده از اسکریپت های اتصال ، به عنوان مثال:
  2. $mysqli = new mysqli('127.0.0.0.1','user','password','database');
    یا به تعبیری رویه ای:
    $mysqli = mysqli_connect('127.0.0.0.1','user','password','database');
  • برای ارتباط با مدیری که از پورت 3306 استفاده نمی کند ، باید شماره پورت را مشخص کنید:
  1. $mysqli = new mysqli('127.0.0.0.1','user','password','database','3307');
    یا به تعبیری رویه ای:
    $mysqli = mysqli_connect('127.0.0.0.1','user','password','database','3307');
  2. برای بررسی اتصالات به مدیر پایگاه داده MySQL یا MariaDB ، از اسکریپت استفاده کنید
    wamp \ www \ testmysql.php by'http: //localhost/testmysql.php '
    ابتدا با تغییر تنظیمات متن با توجه به تنظیمات خود انجام پذیرد.
  • --- MySQL را با MariaDB و برعکس جایگزین کنید ---
    نکته مهم: ضروری است قبل از غیرفعال کردن MySQL ، پایگاه داده های خود را در پرونده های SQL ذخیره کنید.
    این تنها راه پایدار برای انتقال پایگاه داده های خود بین MySQL و MariaDB است.
    - در صورت فعال بودن هر دو ابزار (MySQL و MariaDB) ابزاری برای برگرداندن پیش فرض DBMS با یک کلیک وجود دارد:
    - اگر MySQL DBMS پیش فرض است
    بر روی نماد Wampmanager راست کلیک کنید -> Tools -> وارونه DBMS به صورت پیش فرض MySQL <-> MariaDB
    یا
    - اگر MariaDB DBMS پیش فرض است
    روی نماد Wampmanager راست کلیک کنید -> Tools -> Inverse DBMS به طور پیش فرض MariaDB <-> MySQL
    البته ، شما هنوز هم باید بانک اطلاعاتی را که قبلاً پشتیبان تهیه کرده اید وارد کنید.

    --- بدون استفاده از MariaDB و MySQL
    شما لازم نیست که از مدیریت MySQL و MariaDB استفاده کنید ، فقط می توانید آنهایی را که مناسب شماست نگه دارید و حتی می توانید هر دو مدیر پایگاه داده را کاملاً غیرفعال کنید:
  • روی نماد Wampmanager راست کلیک کنید
  • Right-click Wampmanager Icon -> Wamp Settings -> Allow MariaDB to uncheck
  • Right-click Wampmanager Icon -> Wamp Settings -> Allow MySQL to uncheck
    یکی از گزینه های بالا بنابر نیازتان کلیک کنید ( اگر تیک کنارش نمایان باشد فعال است در غیر این صورت غیر فعال میشود .)

راه حل : من  از پایگاه داده mysql استفاده کردم و در فایل db.php در کد

// Create connection
$this->connection = new mysqli($host, $user, $pass, $name);

یک پارامتر 3308 را به آخر کد اضافه نمودم که در زیر مشاهده میکنید :

// Create connection
$this->connection = new mysqli($host, $user, $pass, $name, 3308);

وسلام اتصال بر قرار میشود .


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .