锟斤拷锟斤拷锟斤拷

应锟矫筹拷锟斤拷使锟矫憋拷锟斤拷锟斤拷锟接︼拷锟斤拷锟斤拷锟矫伙拷锟斤拷 API 锟斤拷锟斤拷实锟斤拷一些锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟节诧拷锟� 锟侥憋拷锟斤拷锟斤拷锟接匡拷锟狡o拷API 锟斤拷锟矫匡拷锟杰凤拷锟截诧拷锟斤拷预锟节的达拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟接匡拷锟斤拷锟叫o拷 锟斤拷么锟斤拷锟接斤拷锟斤拷锟节达拷锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟接o拷锟斤拷锟斤拷一锟斤拷锟斤拷锟接池★拷锟斤拷么一锟斤拷锟斤拷锟斤拷锟脚猴拷 锟斤拷锟斤拷锟斤拷息锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟接匡拷锟斤拷锟叫o拷锟斤拷么锟斤拷锟斤拷锟杰憋拷锟斤拷锟斤拷锟斤拷锟轿猴拷一锟斤拷实锟绞碉拷锟斤拷锟斤拷锟叫★拷

锟斤拷锟绞癸拷锟侥拷系谋锟斤拷锟斤拷锟斤拷樱锟斤拷锟矫达拷锟斤拷锟斤拷锟绞碉拷什锟窖达拷锟斤拷锟角帮拷遣锟斤拷锟斤拷锟绞碉拷锟斤拷锟斤拷拥摹锟� 锟斤拷锟斤拷一锟斤拷执锟斤拷锟斤拷锟斤拷 API 锟斤拷锟矫伙拷锟斤拷锟揭伙拷锟斤拷锟斤拷哟锟斤拷锟斤拷锟斤拷锟侥凤拷锟斤拷锟叫o拷锟斤拷锟斤拷锟斤拷锟斤拷 slave 锟斤拷执锟斤拷一锟斤拷锟斤拷锟斤拷时锟津将诧拷锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷锟接达拷锟斤拷牟锟斤拷锟斤拷锟斤拷锟轿拷锟斤拷锟斤拷锟斤拷募锟斤拷锟� 没锟斤拷锟借定一锟斤拷锟斤拷效锟斤拷 slave锟斤拷

Example #1 Provoking a connection error

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "invalid_host_name",
            }
        },
        "lazy_connections": 1
    }
}

锟斤拷确锟斤拷指锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟借定只锟斤拷为锟剿凤拷锟斤拷目锟斤拷使锟矫★拷

Example #2 锟节诧拷询执锟斤拷时锟斤拷锟斤拷锟斤拷锟接达拷锟斤拷

<?php
$mysqli 
= new mysqli("myapp""username""password""database");
if (
mysqli_connect_errno())
  
/* Of course, your error handling is nicer... */
  
die(sprintf("[%d] %s\n"mysqli_connect_errno(), mysqli_connect_error()));

/* 锟斤拷锟斤拷 1锟斤拷锟斤拷锟斤拷锟斤拷锟叫帮拷 SQL 锟矫伙拷锟斤拷锟斤拷锟斤拷锟斤拷锟矫伙拷锟� SELECT 锟斤拷锟斤拷锟斤拷 master 锟斤拷锟斤拷锟斤拷 */
if (!$mysqli->query("SET @myrole='master'")) {
 
printf("[%d] %s\n"$mysqli->errno$mysqli->error);
}

/* 锟斤拷锟斤拷 2锟斤拷锟斤拷锟斤拷 SELECT 锟斤拷 slave锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷锟接达拷锟斤拷 */
if (!($res $mysqli->query("SELECT @myrole AS _role"))) {
 
printf("[%d] %s\n"$mysqli->errno$mysqli->error);
} else {
 
$row $res->fetch_assoc();
 
$res->close();
 
printf("@myrole = '%s'\n"$row['_role']);
}
$mysqli->close();
?>

锟斤拷锟斤拷锟斤拷锟教碉拷锟斤拷锟斤拷锟斤拷锟斤拷冢锟�

PHP Warning:  mysqli::query(): php_network_getaddresses: getaddrinfo failed: Name or service not known in %s on line %d
PHP Warning:  mysqli::query(): [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known (trying to connect via tcp://invalid_host_name:3306) in %s on line %d
[2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

应锟矫筹拷锟斤拷希锟斤拷通锟斤拷锟斤拷效锟侥达拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷哟锟斤拷锟�

锟斤拷锟斤拷使锟矫碉拷目锟侥o拷应锟矫筹拷锟斤拷应锟斤拷希锟斤拷锟斤拷锟斤拷锟斤拷些锟斤拷锟襟,碉拷锟酵的达拷锟斤拷锟斤拷锟斤拷 2002 (CR_CONNECTION_ERROR) - Can't connect to local MySQL server through socket '%s' (%d), 2003 (CR_CONN_HOST_ERROR) - Can't connect to MySQL server on '%s' (%d) 锟斤拷 2005 (CR_UNKNOWN_HOST) - Unknown MySQL server host '%s' (%d)锟斤拷 锟斤拷锟界,应锟矫筹拷锟斤拷锟斤拷锟斤拷卸锟斤拷锟叫╋拷锟斤拷锟斤拷牛锟斤拷锟斤拷锟斤拷侄锟斤拷锟街达拷锟侥承╋拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟皆讹拷锟侥斤拷锟斤拷 锟斤拷些锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 master 锟斤拷锟斤拷锟斤拷锟斤拷为锟斤拷些锟斤拷锟斤拷锟斤拷透锟斤拷锟侥诧拷锟斤拷锟斤拷

Example #3 锟斤拷锟斤拷一锟斤拷锟斤拷锟接达拷锟斤拷

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "invalid_host_name"
            },
            "slave_1": {
                "host": "192.168.78.136"
            }
        },
        "lazy_connections": 1,
        "filters": {
            "roundrobin": [

            ]
        }
    }
}

锟斤拷确锟斤拷指锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷只为锟剿斤拷锟叫凤拷锟斤拷使锟矫o拷锟斤拷锟斤拷使锟斤拷默锟较的革拷锟截撅拷锟斤拷锟斤拷锟� random once锟斤拷

Example #4 锟角筹拷锟斤拷锟斤拷锟侥达拷锟斤拷锟斤拷

<?php
$mysqli 
= new mysqli("myapp""username""password""database");
if (
mysqli_connect_errno())
  
/* Of course, your error handling is nicer... */
  
die(sprintf("[%d] %s\n"mysqli_connect_errno(), mysqli_connect_error()));

/* Connection 1, connection bound SQL user variable, no SELECT thus run on master */
if (!$mysqli->query("SET @myrole='master'")) {
 
printf("[%d] %s\n"$mysqli->errno$mysqli->error);
}

/* 锟斤拷锟斤拷 2锟斤拷锟斤拷一锟斤拷 Slave 执锟斤拷 */
$res $mysqli->query("SELECT VERSION() AS _version");
/* 强硬锟侥斤拷锟叫达拷锟斤拷锟斤拷 */
if (2002 == $mysqli->errno || 2003 == $mysqli->errno || 2004 == $mysqli->errno) {
  
/* 锟斤拷锟斤拷 3锟斤拷锟斤拷一锟斤拷 slave 锟斤拷锟斤拷失锟杰o拷锟斤拷锟斤拷锟斤拷一锟斤拷 slave 锟斤拷锟斤拷 */
  
$res $mysqli->query("SELECT VERSION() AS _version");
}

if (!
$res) {
  
printf("ERROR, [%d] '%s'\n"$mysqli->errno$mysqli->error);
} else {
 
/* 锟斤拷锟斤拷锟斤拷 3 锟叫伙拷取锟斤拷锟斤拷锟斤拷息锟斤拷锟斤拷锟斤拷没锟叫达拷锟斤拷 */
 
printf("SUCCESS, [%d] '%s'\n"$mysqli->errno$mysqli->error);
 
$row $res->fetch_assoc();
 
$res->close();
 
printf("version = %s\n"$row['_version']);
}
$mysqli->close();
?>

锟斤拷锟斤拷锟斤拷锟教碉拷锟斤拷锟斤拷锟斤拷锟斤拷冢锟�

[1045] Access denied for user 'username'@'localhost' (using password: YES)
PHP Warning:  mysqli::query(): php_network_getaddresses: getaddrinfo failed: Name or service not known in %s on line %d
PHP Warning:  mysqli::query(): [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known (trying to connect via tcp://invalid_host_name:3306) in %s on line %d
SUCCESS, [0] ''
version = 5.6.2-m5-log

锟斤拷锟斤拷一些原锟斤拷锟斤拷锟接匡拷锟狡诧拷锟斤拷锟斤拷锟杰猴拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟叫硷拷锟斤拷锟斤拷械拇锟斤拷锟� 锟斤拷锟界,锟斤拷锟角硷拷锟斤拷锟斤拷锟斤拷锟接筹拷锟斤拷锟斤拷 3 锟斤拷锟斤拷锟斤拷锟斤拷锟接o拷一锟斤拷锟斤拷锟斤拷锟斤拷 master 锟斤拷锟接o拷2锟斤拷锟斤拷 slave 锟斤拷锟接★拷 应锟矫筹拷锟斤拷通锟斤拷 mysqli_select_db() API 锟斤拷锟矫改变当前锟斤拷锟斤拷锟斤拷锟捷库, 锟斤拷锟斤拷锟截碉拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷页锟斤拷愿锟斤拷牡锟角帮拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟酵骋伙拷锟斤拷堑锟斤拷锟斤拷锟阶刺拷锟斤拷锟斤拷 master 锟窖撅拷锟缴癸拷锟侥革拷锟斤拷锟斤拷锟斤拷锟捷库,锟斤拷锟斤拷 slave 锟斤拷锟接革拷锟斤拷失锟杰o拷锟斤拷么锟斤拷使锟矫碉拷一锟斤拷 slave 锟斤拷锟接碉拷时锟斤拷 锟斤拷锟叫伙拷锟斤拷锟揭伙拷锟斤拷锟斤拷哟锟斤拷蟆6锟斤拷诘诙锟斤拷锟� slave 锟斤拷锟斤拷也锟斤拷一锟斤拷锟侥o拷锟斤拷么锟节碉拷一锟斤拷 slave 锟较碉拷 锟斤拷锟斤拷锟斤拷息锟斤拷锟斤拷锟斤拷失锟斤拷

锟斤拷锟斤拷锟斤拷锟斤拷拢锟斤拷锟斤拷锟酵拷锟斤拷锟斤拷 E_WARNING 锟斤拷锟酵的达拷锟襟,伙拷锟竭硷拷锟� mysqlnd_ms debug and trace log锟斤拷