laravel 错误使用shell内置组件:mysqldump:Got error:2004:“无法创建TCP/IP套接字”

nfg76nw0  于 2023-04-22  发布在  Shell
关注(0)|答案(5)|浏览(137)

正在启动备份...
正在转储数据库hms...
备份失败,因为转储进程失败,退出代码为2:错误使用shell内置组件:mysqldump:Got error:2004:尝试连接时出现“无法创建TCP/IP套接字(10106“未知错误”)”\r\n
我得到了以下错误,而试图
Artisan::call('backup:run');
$output=Artisan::output();
使用php artisan backup:在命令行上运行工作正常。x1c 0d1x
把它叫做Laravel的Artisan就犯了这个错误。
我正确地分配了config/database.phpdump

'mysql' => [
            ...
            'dump' => [
               'dump_binary_path' => 'C:\xampp\mysql\bin',
               'use_single_transaction',
               'timeout' => 60 * 5, 
               'exclude_tables' => ['table1', 'table2'],
            ]  
        ],

请帮帮我

tzxcd3kk

tzxcd3kk1#

**只需将您的项目C:\xampp\htdocsfolder放入并在浏览器中打开即可:

yourdomain/PROJECT-NAME/public
It works fine for me**

hc2pp10m

hc2pp10m2#

尝试这种方式,我遇到了同样的问题,artisan backup:run成功生成备份,但当我尝试从路由或控制器使用Artisan调用它时,我遇到了同样的错误,但我找到了另一种解决方案,我在这里使用Shell_exec确保在xampp/wamp中启用它

**注意:**我用的是PHP 7.4.29
检查shell_exec是否已启用

if(function_exists('shell_exec')) {
    echo "shell_exec is enabled";
}

web.php

Route::get('/export',function(){
    shell_exec("C:/xampp/mysql/bin/mysqldump -h localhost -u root test > C:/xampp/htdocs/projects/main.sql");
  });

还可查看此参考以获取帮助:https://stackoverflow.com/a/15294585/13804634

我也在spatie/laravel-backup上提出了一个争议,但是,我猜我的环境中有一个问题。

确保在环境变量中设置mysqldump'mysqldump' is not recognized as an internal or external command

e7arh2l6

e7arh2l63#

我已经投入了大量的时间,特别是在这个特定的问题,并找到了解决方案,在我的情况下...作为php artisan backup: run命令成功地备份数据库使用CLI...所以没有问题的包本身...我使用"spatie/laravel-backup": "^6.16"

route/web.php创建一个路由来测试artisan命令

Route::get('/backup', function() {
  Artisan::call('backup:run'); 
});

正如我所看到的,当我们尝试启动laravel应用程序时,我们使用CLI,例如:
php artisan serve,则您的项目将托管在127.0.0.1:8080/project/或任何给定端口上。
相反,尝试直接从您的本地主机访问该项目,而无需artisan,然后从地址栏localhost/project/backup导航到您的项目目录,它将在storage/app/public/目录中生成备份。
如果你什么都试过了一定要试试这个...

yv5phkfx

yv5phkfx4#

对我来说,在这种情况下,PHP Artisan Serve不起作用。
我尝试virtualhost在本地运行应用程序。

<VirtualHost *:80>
    ServerName apps.web
    DocumentRoot "C:\xampp\htdocs\apps\public"
    <Directory "C:\xampp\htdocs\apps\public>"
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
        <IfModule mod_authz_core.c>
        Require all granted
        </IfModule>
    </Directory>
</VirtualHost>
qv7cva1a

qv7cva1a5#

只需将项目文件夹放到C:\xampp\htdocs,然后在浏览器中打开它:
yourdomain/PROJECT-NAME/public
对我来说很好

相关问题