我一直在使用 Laravel package for the Wordpress JSON REST API而且效果很好。我想将我的博客文章存储在我的数据库中。我使用 phpMyAdmin 添加了一个名为 idybrand_laravel 的表
我创建了一个文件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
中编写一些代码,例如 init
或 save
吗?谁能告诉我为什么连接被拒绝?我使用 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/