You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel数据库数据插入问题及SQLSTATE[HY000][2002]连接拒绝报错求助

解决Laravel数据库连接拒绝错误 & 正确存储数据指南

嘿,咱们先搞定你遇到的SQLSTATE[HY000] [2002] Connection refused错误,再把数据存储的代码给捋顺~

一、先解决数据库连接拒绝的问题

这个错误说白了就是Laravel连不上你的MySQL服务,咱们按这几步排查:

1. 确认MySQL服务是否在运行

  • 如果你用的是XAMPP/WAMP这类集成环境,打开控制面板看看MySQL的状态,确保它是启动的;
  • 要是用命令行,直接敲mysql -u root -p,输入密码root试试能不能登录。登不上的话,要么服务没开,要么密码不对。

2. 核对.env配置的细节

你的.env配置看起来没问题,但还是要确认这几点:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cafe
DB_USERNAME=root
DB_PASSWORD=root
  • 确认DB_PORT和你MySQL的实际端口一致(默认是3306,要是改过人要对应上);
  • 登录MySQL后,敲SHOW DATABASES;看看有没有cafe这个库;
  • 确认root用户的密码真的是root,不对的话就改.env里的DB_PASSWORD。

3. 清掉Laravel的配置缓存

有时候Laravel会缓存旧配置,导致新配置不生效,敲这俩命令就行:

php artisan config:clear
php artisan cache:clear

二、修正代码,正确存储数据

你的代码还有几个小问题,调整后就能正常工作了:

1. 控制器代码优化

首先你的控制器有语法错误,而且规范写法也得调整下:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Store; // 模型类名要大写,符合Laravel的命名规范

class StoreController extends Controller
{
    public function store(Request $request)
    {
        // 方式一:手动赋值(你原来的写法,修正语法)
        $nuevoLocal = new Store();
        $nuevoLocal->name = "El café de mi esquina"; // 去掉末尾多余的空格
        $nuevoLocal->description = "Es lindo";
        $nuevoLocal->save(); // 注意这里是->save(),不要加空格

        // 方式二:用create方法更简洁(因为你设置了$guarded=[],可以批量赋值)
        // Store::create([
        //     'name' => "El café de mi esquina",
        //     'description' => "Es lindo"
        // ]);

        // 最后加个跳转提示,用户体验更好
        return redirect()->back()->with('success', 'Negocio agregado exitosamente');
    }
}

2. 路由要改对

存储数据应该用POST请求,GET请求不适合提交数据(安全和规范问题):

// web.php
use App\Http\Controllers\StoreController;

// 如果需要显示添加页面,加这个路由
Route::get('/agregarNegocio', [StoreController::class, 'create']);
// 处理数据提交的路由,用POST
Route::post('/agregarNegocio', [StoreController::class, 'store']);

要是只是临时测试,用GET也能跑,但正式环境一定要换成POST。

3. 模型类名要规范

把你的模型文件名从store.php改成Store.php,内容调整成这样:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Store extends Model // 类名首字母大写,和文件名一致
{
    protected $guarded = []; // 加上protected修饰符,这是Laravel的规范写法
    public $timestamps = false;
}

类名和文件名一致才能让Laravel自动加载模型,避免不必要的错误。


三、测试验证

  1. 先确保MySQL服务正常启动,能登录;
  2. 执行之前说的清缓存命令;
  3. 要是用POST路由,就做个简单的表单提交,或者用Postman发POST请求到/agregarNegocio;
  4. 最后去cafe数据库的stores表里看看,应该就能看到新增的数据啦~

内容的提问来源于stack exchange,提问作者petrushka_95

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:30:04