diff --git a/README.md b/README.md index 8eee2aa..dbc31b4 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,12 @@ To specify a different local database connection: LOCAL_TARGET_CONNECTION=different_mysql_connection ``` +Set the mysql command path: + +``` +LOCAL_MYSQL_PATH=/usr/bin/mysql +``` + For only mysqldump: ``` REMOTE_MYSQLDUMP_SKIP_TZ_UTC=true diff --git a/config/dbsync.php b/config/dbsync.php index 86dcf13..ba21ff6 100755 --- a/config/dbsync.php +++ b/config/dbsync.php @@ -68,4 +68,6 @@ 'targetConnection' => env('LOCAL_TARGET_CONNECTION', 'mysql'), 'mysqldumpSkipTzUtc' => env('REMOTE_MYSQLDUMP_SKIP_TZ_UTC', false), + + 'localMysqlPath' => env('LOCAL_MYSQL_PATH', '/usr/local/bin/mysql'), ]; diff --git a/src/Console/DbSyncCommand.php b/src/Console/DbSyncCommand.php index 58936f6..4647066 100644 --- a/src/Console/DbSyncCommand.php +++ b/src/Console/DbSyncCommand.php @@ -37,6 +37,13 @@ public function handle(): bool $mysqldumpSkipTzUtc = config('dbsync.mysqldumpSkipTzUtc') ? '--skip-tz-utc' : ''; $targetConnection = config('dbsync.targetConnection'); + + $localUsername = config('database.connections.mysql.username'); + $localPassword = config('database.connections.mysql.password'); + $localHostname = config('database.connections.mysql.host'); + $localPort = config('database.connections.mysql.port'); + $localDatabase = config('database.connections.mysql.database'); + $localMysqlPath = config('dbsync.localMysqlPath'); if (empty($host) || empty($username) || empty($database)) { $this->error('DB credentials not set, have you published the config and set ENV variables?'); @@ -60,7 +67,10 @@ public function handle(): bool $this->comment(implode(PHP_EOL, $output)); if ($importSqlFile === true) { - DB::connection($targetConnection)->unprepared(file_get_contents(base_path($fileName))); + $command = $localPassword + ? "$localMysqlPath -u$localUsername -h$localHostname -p$localPassword -P$localPort $localDatabase < $fileName" + : "$localMysqlPath -u$localUsername -h$localHostname -P$localPort $localDatabase < $fileName"; + exec($command, $output); } if ($removeFileAfterImport === true) {