Używam Pakiet Lavel dla API WordPress Json Reszta i działa dobrze. Chcę przechowywać moje blogostowie w mojej bazie danych. Użyłem phpMyAdmin, aby dodać tabelę o nazwie {x1}}

enter image description here

Stworzyłem plik app/blogpost

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class blogpost extends Model
{
    //
}

I na razie w moim BlogController Próbuję prostego testu, pragnę przechowywać dane w zaledwie 3 polach stołu

<?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;
  }

}

Nie zmieniłem pliku config/database.php i mojego {x1}} wygląda tak:

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

Otrzymany przeze mnie błąd to:

QueryException in Connection.php line 770: SQLSTATE[HY000] [2002] Connection refused (SQL: insert into blogposts ( id , wp_id {x3}} link , Updated_at {x5}} Creater_at {x6}}

Czy muszę napisać jakiś kod, taki jak init lub save wewnątrz app/blogpost? Czy ktoś może mi powiedzieć, dlaczego połączenie jest odmówione? Używam localhost, ponieważ mój projekt jest w rozwoju nie produkcji.

EDYTUJ:

Po pewnej pomocy od chłopaków w czacie, w tym Davejal, jestem teraz w stanie połączyć się z serwerem zarówno za pomocą wiersza poleceń w OS X:

$ mysql -u idybrand_dave -pMY_PASSWORD -h 181.224.130.159 idybrand_laravel

Oraz za pomocą Sequel Pro bez problemu. Ale nadal mam ten sam błąd w Lavel podczas próby podłączenia za pomocą tych dokładnych ustawień w moim .env:

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

Próbowałem również edytować mój model zgodnie z sugestią Sona, ale nie pomaga:

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

Czy ktoś może rzucić światło na ten błąd?

końcowa edycja:

Miałem fundamentalne niezrozumienie, że pomyślałem, że mogę użyć środowiska programistycznego lokalnego "lokalnego" lokalnego ", aby pisać dane do tabeli, która istnieje na serwerze (strona internetowa) w środowisku" produkcji ".

Kiedyś przeczytałem Lavel bazy danych Pierwsze kroki i obserwowałem te trzy filmy według Mindspace wszystko stało się jasne. Zasadniczo potrzebowałem środowiska serwera działające lokalnie, a to jest dostarczane przez Vagrant i VMware Fusion.

Po ustawieniu go mogłem uzyskać dostęp do przeglądarki http://idy.app/.

Mój plik .env:

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

Zaakceptowałem odpowiedź Davejala, ponieważ prowadzi mnie do rozwiązania.

0
Dave Chambers 17 luty 2017, 13:48

2 odpowiedzi

Najlepsza odpowiedź

Istnieje kilka możliwości, dlaczego twój błąd.

  • Serwer bazy danych nie został uruchomiony, sprawdź, czy nadal możesz używać swojego phpmyadmin. Jeśli nadal możesz go użyć, nic nie jest nie tak z serwerem bazy danych.
  • niewłaściwa konfiguracja; Sprawdź ustawienia nazwy użytkownika, hasła i serwera w pliku OENV i konfiguracji / bazy danych.php
  • Brak przywilejów na serwer i bazy danych z danymi poświadczeniami

Patrząc na kroki, które już wziąłeś, myślę, że to ostatni.

Sprawdź, czy ten użytkownik ma dostęp do bazy danych z odległej lokalizacji. Domyślnie użytkownik root ma dostęp do serwera lokalnie (LocalHost, 127.0.0.1 i :: 1).

Więc sprawdź, czy użytkownik ma dostęp z pilota IP lub z dowolnego miejsca.

1
davejal 17 luty 2017, 12:05

Napotkałem również połączenie "Sqlstate [HY000] [2002]" komunikat o błędzie, wszystko, co musiałem zrobić, to zmienić numer portu MySQL w {x1}} i database.php.

DB_PORT=3306
'port' => env('DB_PORT', '3306')

Zmieniłem zarówno do numeru portu skonfigurowanego dla MySQL w MAMP.

0
zEELz 28 maj 2018, 05:51