首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当试图将数据写入数据库时,SQLSTATE[HY000] [2002]拒绝与Laravel连接

问当试图将数据写入数据库时,SQLSTATE[HY000] [2002]拒绝与Laravel连接
EN

Stack Overflow用户
提问于 2017-02-17 10:48:31
回答 2查看 7.9K关注 0票数 0

我一直在使用Wordpress JSON REST的Laravel包,它运行得很好。我想把我的博客存储在我的数据库里。我使用phpMyAdmin添加了一个名为idybrand_laravel的表

​

​

我创建了一个文件app/blogpost

代码语言:javascript
复制
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class blogpost extends Model
{
    //
}

现在,在我的BlogController中,我正在尝试一个简单的测试,希望只在表的三个字段中存储数据。

代码语言:javascript
复制
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

use WpApi;

use App\blogpost;

use Carbon\Carbon;

class BlogController extends Controller
{
  public function getPosts()
  {

    foreach (WpApi::posts() as $post) {
      $this->createPost($post);
    }
    //return view('pages.blog', ['active'=>'navBlog'])->with('posts',     WpApi::posts());
  }

  protected function createPost($data)
  {
    $post = new blogpost();
    $post->id = $post['id'];          // integer
    $post->wp_id = $post['id'];      // integer
    $post->link = $post['link'];          //string
    $post->save();

    return $post;
  }

}

我没有更改config/database.php,我的.env文件如下所示:

代码语言:javascript
复制
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=idybrand_laravel
DB_USERNAME=idybrand_dave
DB_PASSWORD=myPassword

我收到的错误是:

QueryException in Connection.php line 770: SQLSTATE[HY000] [2002] Connection refused (SQL: insert intoblogposts(id,wp_id,link,updated_at,created_at) values (, , , 2017-02-17 10:21:57, 2017-02-17 10:21:57))

我需要在init或save内部编写一些代码吗?有人能告诉我为什么这个连接被拒绝吗?我使用localhost作为我的项目正在开发中,而不是生产中。

编辑:

在聊天人员(包括davejal )的帮助下,我现在能够通过OS中的命令行连接到服务器:

代码语言:javascript
复制
$ mysql -u idybrand_dave -pMY_PASSWORD -h 181.224.130.159 idybrand_laravel

并且使用续集Pro没有问题。但是,当我试图使用.env文件中完全相同的设置连接时,在Laravel中仍然会出现相同的错误:

代码语言:javascript
复制
DB_CONNECTION=mysql
DB_HOST=181.224.130.159 //Siteground IP Address
DB_PORT=3306
DB_DATABASE=idybrand_laravel
DB_USERNAME=idybrand_dave
DB_PASSWORD=MY_PASSWORD

我还试图按照Sona的建议编辑我的模型,但这没有帮助:

代码语言:javascript
复制
class blogpost extends Model
{
    protected $table = 'blogposts';
    protected $fillable = array('id', 'wp_id', 'link', 'title', 'author_code', 'content', 'created_at', 'updated_at');
}

有谁能解释一下这个错误吗?

最终编辑:

我有一个根本的误解,我认为我可以使用本地的“本地”开发环境将数据写入服务器(Siteground)环境中存在的表中。

一旦我读了Laravel数据库启动,看了Mindspace的这三个视频,一切都变得清晰起来。基本上,我需要一个本地运行的服务器环境,这是由流浪汉和VMWare融合提供的。

在设置它之后,我可以在浏览器中访问http://idy.app/,而homestead-7 VM正在运行并写入数据库。

我的.env文件:

代码语言:javascript
复制
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=33060
DB_DATABASE=idy
DB_USERNAME=homestead
DB_PASSWORD=secret

我已经接受了达韦贾尔的回答,因为它使我找到了解决办法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-17 12:05:06

有几种可能会导致这个错误。

  • 数据库服务器尚未启动,请检查是否仍然可以使用phpmyadmin。如果您仍然可以使用它,那么数据库服务器没有什么问题。
  • 错误的配置;检查.env文件和config/database.php中的用户名、密码和服务器设置
  • 对具有给定凭据的服务器和或数据库没有特权。

看看你已经采取的步骤,我想这是最后一步了。

检查此用户是否可以从远程位置访问数据库。默认情况下,根用户可以在本地访问服务器(localhost,127.0.0.1和:1)。

因此,请检查用户是否可以从您的远程ip或从任何地方访问。

票数 1
EN

Stack Overflow用户

发布于 2018-05-28 05:51:42

我还遇到了"SQLSTATEHY000连接被拒绝“的错误消息,我所需要做的就是更改.env和database.php文件中的MySQL端口号,以匹配MAMP上的端口号。

代码语言:javascript
复制
DB_PORT=3306
'port' => env('DB_PORT', '3306')

我将这两个端口号都更改为MAMP中为MySQL配置的端口号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42295955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档