2017-02-17 133 views
0

我一直在使用Laravel package for the Wordpress JSON REST API,它工作正常。我想将我的博客贴在我的数据库中。我用phpMyAdmin添加名为idybrand_laravelSQLSTATE [HY000] [2002]尝试向数据库写入数据时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 

我收到的错误是:

QueryException in Connection.php line 770: SQLSTATE[HY000] [2002] Connection refused (SQL: insert into相关博客文章( ID , wp_id ,链接,的updated_at , created_at ) values (, , , 2017-02-17 10:21:57, 2017-02-17 10:21:57))

我是否需要写一些代码像initsave里面app/blogpost?有人可以告诉我为什么连接被拒绝?我正在使用localhost,因为我的项目正在开发而不是生产。

编辑:

在聊天的球员包括davejal一些帮助后,我现在可以BOTH通过在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 

我也试图通过索娜的建议修改我的模型,但它并不能帮助:

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并观看了Mindspace的these three视频都变得清晰了。基本上,我需要一个在本地运行的服务器环境,这由VagrantVMWare Fusion提供。

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

.env文件:

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

我已经接受了davejal的答案,因为它使我的解决方案。

+0

你需要添加可填写栏试试这个.. – Sona

+0

@Sona干杯 - 我会尽力 –

+0

保护$可填写= [“FNAME”,“L-NAME”];这样的..广告列名 – Sona

回答

0

有几种可能性为什么你得到这个错误。

  • 数据库服务器未启动,请检查您是否仍然可以使用您的phpmyadmin。如果你仍然可以使用它,那么你的数据库服务器没有问题。
  • 错误的配置;检查用户名,密码,并在这两个你.ENV文件服务器设置和配置/ database.php中
  • 没有特权服务器和数据库或与给定的凭据

纵观步骤,你已经把我认为这是最后。

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

因此请检查用户是否有权访问您的远程IP或从任何地方访问。在博文的模型

相关问题