2017-02-17 4 views
0

Ich habe die Laravel package for the Wordpress JSON REST API verwendet und es funktioniert gut. Ich möchte meine Blogposts in meiner Datenbank speichern. Ich benutzte phpMyAdmin genannt einen Tisch idybrand_laravelSQLSTATE [HY000] [2002] Verbindung verweigert mit Laravel beim Versuch, Daten in die Datenbank zu schreiben

enter image description here

ich eine Datei app/blogpost

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class blogpost extends Model 
{ 
    // 
} 

und jetzt erstellt hinzufügen in meinem BlogController Ich versuche, einen einfachen Test, wollen Daten zu speichern, in nur 3

Felder der Tabelle haben
<?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; 
    } 

} 

ich nichtgeändertund meine .env Datei sieht wie folgt aus:

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

Der Fehler, den ich erhalten ist:

QueryException in Connection.php line 770: SQLSTATE[HY000] [2002] Connection refused (SQL: insert into Blogeinträge ( id ,, Link , updated_at , created_at ) values (, , , 2017-02-17 10:21:57, 2017-02-17 10:21:57))

Sie wp_id Ich brauche einen Code zu schreiben wie init oder save innerhalb app/blogpost? Kann mir jemand sagen, warum die Verbindung verweigert wird? Ich verwende localhost, da mein Projekt in der Entwicklung nicht Produktion ist.

EDIT:

Nach etwas Hilfe von den Jungs im Chat einschließlich davejal, bin ich jetzt in der Lage mit dem Server zu verbinden, sowohl über die Befehlszeile in O X:

$ mysql -u idybrand_dave -pMY_PASSWORD -h 181.224.130.159 idybrand_laravel 

UND mit Sequel Pro ohne Problem. Aber ich immer noch die gleichen Fehler in Laravel bei der Verwendung dieser exakt gleichen Einstellungen in meiner .env Datei zu verbinden versuchen:

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 

Ich habe auch versucht, mein Modell zu bearbeiten, wie von Sona vorgeschlagen, aber es hilft nicht:

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

Kann jemand bitte Licht auf diesen Fehler werfen?

FINAL EDIT:

hatte ich ein grundsätzliches Missverständnis, dass ich dachte, ich localhost ‚local‘ Entwicklungsumgebung nutzen könnte Daten in eine Tabelle zu schreiben, die auf dem Server (Siteground) in der ‚Produktion existiert ' Umgebung.

Sobald ich die Laravel Database Getting Started lesen und these three Videos von Mindspace sah, wurde alles klar. Im Grunde brauchte ich eine Serverumgebung, die lokal ausgeführt wird, und dies wird von Vagrant und VMWare Fusion bereitgestellt.

Nach dem Einrichten konnte ich auf http://idy.app/ im Browser zugreifen, während homestead-7 VM ausgeführt wurde und in die Datenbank schreiben.

Meine .env Datei:

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

I davejal Antwort akzeptiert haben, wie es mir zur Lösung führen.

+0

in Blogpost Modell Sie ausfüllbare Spalten hinzufügen müssen versuchen, diese .. – Sona

+0

@Sona Beifall - ich –

+0

protected $ ausfüllbare werde versuchen = [ ‚fname‘, ‚lname‘]; wie diese .. Anzeige Ihre Spaltennamen – Sona

Antwort

0

Es gibt ein paar Möglichkeiten, warum Sie diesen Fehler bekommen.

  • Datenbankserver wurde nicht gestartet, überprüfen Sie, ob Sie Ihren phpmyadmin noch verwenden können. Wenn Sie es immer noch verwenden können, dann ist nichts falsch mit Ihrem Datenbankserver.
  • falsche Konfiguration; überprüfen Benutzername, Passwort und Server-Einstellungen in beide .env Datei und Ihre config/database.php
  • keine Privilegien auf den Server und oder Datenbank mit bestimmten Anmeldeinformationen

in den Schritten der Suche bereits Sie nahm ich glaube, es ist das Letzte.

Überprüfen Sie, ob dieser Benutzer vom Remotestandort aus auf die Datenbank zugreifen kann. Standardmäßig hat der Benutzer root lokal Zugriff auf den Server (localhost, 127.0.0.1 und :: 1).

Überprüfen Sie, ob der Benutzer Zugriff von Ihrer Remote-IP oder von überall hat.

Verwandte Themen