Oracle 5.0 Reference Manual page 2586

Table of Contents

Advertisement

$row = $res->fetch_assoc();
$res->close();
printf("There are %d rows in the table 'slave_reporting'", $row['_num']);
} else {
printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}
$mysqli->close();
?>
The SQL hint
previously used connection.
20.7.6.4.5. Transactions
Copyright 1997-2012 the PHP Documentation Group. [2230]
The current version of the plugin is not transaction safe by default, because it is not aware of running
transactions in all cases. SQL transactions are units of work to be run on a single server. The plugin
does not always know when the unit of work starts and when it ends. Therefore, the plugin may decide
to switch connections in the middle of a transaction.
No kind of MySQL load balancer can detect transaction boundaries without any kind of hint from the
application.
You can either use SQL hints to work around this limitation. Alternatively, you can activate transaction
API call monitoring. In the latter case you must use API calls only to control transactions, see below.
Example 20.228. Plugin config with one slave and one master
[myapp]
{
"myapp": {
"master": {
},
"slave": {
}
}
}
Example 20.229. Using SQL hints for transactions
<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
/* Of course, your error handling is nicer... */
die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));
/* Not a SELECT, will use master */
if (!$mysqli->query("START TRANSACTION")) {
/* Please use better error handling in your code */
die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}
/* Prevent connection switch! */
if (!$mysqli->query(sprintf("/*%s*/INSERT INTO test(id) VALUES (1)", MYSQLND_MS_LAST_USED_SWITCH)))) {
Mysqlnd replication and load balancing plugin (mysqlnd_ms)
MYSQLND_MS_LAST_USED
"master_0": {
"host": "localhost",
"socket": "\/tmp\/mysql.sock"
}
"slave_0": {
"host": "192.168.2.27",
"port": "3306"
}
forbids switching a connection, and forces use of the
2566

Advertisement

Table of Contents
loading

This manual is also suitable for:

Mysql 5.0

Table of Contents