How to modify sql_mode or Strict Mode in MySQL?
There are cases where an application or website requires disabling a restriction of the sql_mode variable in MySQL. For example, disabling "ONLY_FULL_GROUP" or "STRICT_TRANS_TABLES".
Since it is not allowed to modify the sql_mode variable on shared hosting servers, you can modify the restrictions with the following PHP code examples:
Removing all restrictions from "sql_mode" in PDO connections:
<?php
$dsn = 'mysql:host=localhost;dbname=database_name';
$username = 'username';
$password = 'password';
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Set SQL_MODE to empty
$pdo->exec("SET sql_mode = ''");
// Verify the change
$stmt = $pdo->query("SELECT @@sql_mode");
$sql_mode = $stmt->fetchColumn();
echo "Current SQL_MODE: " . $sql_mode;
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
?>
Removing all restrictions from SQL_MODE can make your application more vulnerable to errors or unexpected behaviors. It is advisable to review and understand the implications of disabling certain restrictions before doing so in a production environment.
Removing only a specific restriction from "sql_mode" in PDO connections:
In the following example, we will only remove the "ONLY_FULL_GROUP_BY" restriction.
/<?php
$dsn = 'mysql:host=localhost;dbname=database_name';
$username = 'username';
$password = 'password';
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Remove ONLY_FULL_GROUP_BY from SQL_MODE
$pdo->exec("SET SESSION sql_mode = sys.list_drop(@@SESSION.sql_mode, 'ONLY_FULL_GROUP_BY')");
// Verify the change
$stmt = $pdo->query("SELECT @@SESSION.sql_mode");
$sql_mode = $stmt->fetchColumn();
echo "Current SQL_MODE: " . $sql_mode;
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
?>
PreviousWhy can't IonCube activate on shared hosting servers?NextHow to set up forms if the mail() function is disabled?
Last updated
Was this helpful?