Pular para o conteúdo principal

Database Setup and Configuration

Supported Databases

The library supports the following databases:

DatabaseDriverConnection String
MySQL/MariaDBpdo_mysqlmysql://username:password@hostname:port/database
PostgreSQLpdo_pgsqlpgsql://username:password@hostname:port/database
SQLitepdo_sqlitesqlite:///path/to/file
SQL Serverpdo_dblib (Linux)dblib://username:password@hostname:port/database
SQL Serverpdo_sqlsrv (Windows)sqlsrv://username:password@hostname:port/database

Database-Specific Setup

MySQL/MariaDB

  1. Required PDO Extension:

    sudo apt-get install php-mysql    # Debian/Ubuntu
    sudo yum install php-mysql # RHEL/CentOS
  2. Connection String Format:

    mysql://username:password@hostname:port/database
  3. Optional Parameters:

    mysql://username:password@hostname:port/database?param1=value1&param2=value2
  4. Transaction Limitations:

MySQL Transaction Limitations

MySQL does not support DDL (Data Definition Language) statements within transactions. Any transaction settings will be ignored for DDL operations like CREATE TABLE, ALTER TABLE, etc.

PostgreSQL

  1. Required PDO Extension:

    sudo apt-get install php-pgsql    # Debian/Ubuntu
    sudo yum install php-pgsql # RHEL/CentOS
  2. Connection String Format:

    pgsql://username:password@hostname:port/database
  3. Transaction Support:

    • Full DDL transaction support
    • Recommended to use transactions for migrations

SQLite

  1. Required PDO Extension:

    sudo apt-get install php-sqlite3   # Debian/Ubuntu
    sudo yum install php-sqlite3 # RHEL/CentOS
  2. Connection String Format:

    sqlite:///path/to/database.sqlite
  3. Transaction Support:

    • Full DDL transaction support
    • Transactions enabled by default

SQL Server

Linux (FreeTDS)

  1. Required Packages:

    sudo apt-get install php-sybase    # Debian/Ubuntu
    sudo yum install php-mssql # RHEL/CentOS
  2. Connection String:

    dblib://username:password@hostname:port/database

Windows (Native Driver)

  1. Required:

    • Microsoft ODBC Driver for SQL Server
    • PHP SQL Server extension
  2. Connection String:

    sqlsrv://username:password@hostname:port/database

Connection Examples

Basic Connections

// MySQL
$uri = new \ByJG\Util\Uri('mysql://user:pass@localhost/database');

// PostgreSQL
$uri = new \ByJG\Util\Uri('pgsql://user:pass@localhost/database');

// SQLite
$uri = new \ByJG\Util\Uri('sqlite:///path/to/database.sqlite');

// SQL Server (Linux)
$uri = new \ByJG\Util\Uri('dblib://user:pass@localhost/database');

// SQL Server (Windows)
$uri = new \ByJG\Util\Uri('sqlsrv://user:pass@localhost/database');

With Optional Parameters

// MySQL with charset and SSL
$uri = new \ByJG\Util\Uri(
'mysql://user:pass@localhost/database?charset=utf8mb4&ssl=true'
);

// PostgreSQL with schema and SSL mode
$uri = new \ByJG\Util\Uri(
'pgsql://user:pass@localhost/database?search_path=public&sslmode=require'
);

Environment Variables

For testing, you can configure database connections using environment variables:

# MySQL
export MYSQL_TEST_HOST=localhost
export MYSQL_PASSWORD=password

# PostgreSQL
export PSQL_TEST_HOST=localhost
export PSQL_PASSWORD=password

# SQL Server
export MSSQL_TEST_HOST=localhost
export MSSQL_PASSWORD=password

# SQLite
export SQLITE_TEST_HOST=/tmp/test.db