# ¿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
<?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();
}
?>

```

{% hint style="warning" %}
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.
{% endhint %}

### 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
/<?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();
}
?>

```
