php - SQLSTATE[HY000] [2002] 尝试将数据写入数据库时​​,Laravel 连接被拒绝

标签 php mysql wordpress laravel

我一直在使用 Laravel package for the Wordpress JSON REST API而且效果很好。我想将我的博客文章存储在我的数据库中。我使用 phpMyAdmin 添加了一个名为 idybrand_laravel 的表

enter image description here

我创建了一个文件app/blogpost

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class blogpost extends Model
{
    //
}

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

<?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 文件如下所示:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=idybrand_laravel
DB_USERNAME=idybrand_dave
DB_PASSWORD=myPassword

我收到的错误是:

Connection.php 第 770 行中的 QueryException: SQLSTATE[HY000] [2002] 连接被拒绝(SQL:插入到blogposts(id,wp_id,link, updated_at,created_at) 值 (, , , 2017-02-17 10:21:57, 2017-02-17 10:21:57))

我需要在 app/blogpost 中编写一些代码,例如 initsave 吗?谁能告诉我为什么连接被拒绝?我使用 localhost 因为我的项目正在开发而不是生产中。

编辑:

在包括 davejal 在内的聊天人员的帮助下,我现在可以通过 OS X 中的命令行连接到服务器:

$ mysql -u idybrand_dave -pMY_PASSWORD -h 181.224.130.159 idybrand_laravel

并使用 Sequel Pro没有问题。但当我尝试使用 .env 文件中完全相同的设置进行连接时,我仍然在 Laravel 中遇到相同的错误:

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 的建议编辑我的模型,但没有帮助:

class blogpost extends Model
{
    protected $table = 'blogposts';
    protected $fillable = array('id', 'wp_id', 'link', 'title', 'author_code', 'content', 'created_at', 'updated_at');
}

任何人都可以解释这个错误吗?

最终编辑:

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

一旦我读到Laravel Database Getting Started并观看了these three Mindspace 的视频一切都变得清晰起来。基本上,我需要一个本地运行的服务器环境,这是由Vagrant提供的。和 VMWare Fusion .

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

我的.env文件:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=33060
DB_DATABASE=idy
DB_USERNAME=homestead
DB_PASSWORD=secret

我已经接受了 davejal 的回答,因为它引导我找到了解决方案。

最佳答案

出现此错误的原因有多种可能。

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

看看您已经采取的步骤,我认为这是最后一个。

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

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

关于php - SQLSTATE[HY000] [2002] 尝试将数据写入数据库时​​,Laravel 连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42295955/

相关文章:

php - PHP 脚本可以一直在我的服务器上运行吗?

mysql - 如何连接列不应该存在或查询值不应该在日期之间的表?

mysql - 查询空字符串是否应该在主键列上匹配零?

wordpress - 什么是一个不需要数年时间就能掌握的全面电子商务平台?

WordPress gutenberg 按自定义帖子类型获取帖子

php - 单击函数,Window.location

php - 如何在PHP中接收使用 "application/octet-stream"发送的POST数据?

mysql - 在 MySQL 中存储调查回复的最佳方式是什么?

php - 向 wordpress submit_button 添加一个类

php - 需要有关标签的建议