¿Cómo modificar sql_mode o Strict Mode en MySQL?
Hay casos donde una aplicación o sitio web requiera que se desactive alguna restricción de la variable sql_mode de MySQL. Por ejemplo, desactivar "ONLY_FULL_GROUP" o "STRICT_TRANS_TABLES".
Como no está permitido modificar la variable sql_mode en servidores de hosting compartido, podrás modificar las restricciones con los ejemplos de código PHP siguientes:
Quitar todas las restricciones de "sql_mode", en conexiones PDO:
<?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);
// Establecer SQL_MODE a vacío
$pdo->exec("SET sql_mode = ''");
// Verificar el cambio
$stmt = $pdo->query("SELECT @@sql_mode");
$sql_mode = $stmt->fetchColumn();
echo "SQL_MODE actual: " . $sql_mode;
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
?>
Quitar todas las restricciones del SQL_MODE puede hacer que tu aplicación sea más vulnerable a errores o comportamientos inesperados. Es recomendable revisar y entender las implicaciones de desactivar ciertas restricciones antes de hacerlo en un entorno de producción.
Quitar solo una restricción especifica de "sql_mode", en conexiones PDO:
En el siguiente ejemplo quitaremos solo la restricción "ONLY_FULL_GROUP_BY".
/<?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);
// Quitar ONLY_FULL_GROUP_BY del SQL_MODE
$pdo->exec("SET SESSION sql_mode = sys.list_drop(@@SESSION.sql_mode, 'ONLY_FULL_GROUP_BY')");
// Verificar el cambio
$stmt = $pdo->query("SELECT @@SESSION.sql_mode");
$sql_mode = $stmt->fetchColumn();
echo "SQL_MODE actual: " . $sql_mode;
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
?>
Anterior¿Por qué IonCube no puede activarse en servidores de hosting compartido?SiguienteDominio sin SSL instalado
Última actualización
¿Te fue útil?