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自动加载模型,避免不必要的错误。
三、测试验证
- 先确保MySQL服务正常启动,能登录;
- 执行之前说的清缓存命令;
- 要是用POST路由,就做个简单的表单提交,或者用Postman发POST请求到
/agregarNegocio; - 最后去
cafe数据库的stores表里看看,应该就能看到新增的数据啦~
内容的提问来源于stack exchange,提问作者petrushka_95
相关产品推荐
相关产品推荐

