无法使用在AWS EC2实例上运行的laravel 5.2从数据库中提取数据

时间:2016-05-30 14:17:33

标签: php mysql laravel amazon-ec2 laravel-5.2

我正在关注video tutorial系列,并且我将用户路由到显示来自数据库的信息的页面。他正在使用localhost Sequel,我正在AWS EC2实例上运行Mysql。

这是错误

QueryException in Connection.php line 713:
SQLSTATE[42S02]: Base table or view not found: 1146 Table
'phpmyadmin.products_lists' doesn't exist (SQL: select * from 
`products_lists` where `products_lists`.`id` = 7 limit 1)

我的routes.php的内容

Route::get('product', function() {
//echo 'hello';
$product = App\products_list::find(7);
print_r($product);
});

Route::group(['middleware' => ['web']], function(){

});

我的模特的内容

namespace App;

use Illuminate\Database\Eloquent\Model;

class products_list extends Model
{
    //
}

和我的.env的内容

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=
DB_DATABASE=localhost
DB_USERNAME=root
DB_PASSWORD=snipsnip

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

注意我的错误是'phpmyadmin.products_lists',但我不明白为什么larval坚持要保留我以前的.env文件中的数据。 另外,我不确定APP_KEY=SomeRandomString,因为除了数据库问题之外,它运行正常。

以下是我的实例的内容/etc/phpmyadmin/config-db.php

$dbuser='phpmyadmin';
$dbpass='snipsnip';
$basepath='';
$dbname='phpmyadmin';
$dbserver='';
$dbport='';
$dbtype='mysql';

3 个答案:

答案 0 :(得分:1)

Laravel Eloquent尝试访问模型本身的复数表。这就是为什么您的类名为include ("add.php"); - where the input forms are 并且它试图找到名为products_list的表的原因。如果您使用的是自定义名称,请设置表名:

products_lists

至于密钥,只需生成自己的密钥:

namespace App;

use Illuminate\Database\Eloquent\Model;

class products_list extends Model
{
    protected $table = 'your_custom_name';
}

答案 1 :(得分:0)

事实证明我的问题是模型

应该是

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class products_list extends Model
{
    protected $table = 'products_list';
}

因为Laravel默认情况下会查看数据库phpmyadmin 这不是我想要的。我的解决方法是修改模型并在phpmyadmin中创建一个名为products_list的表。

答案 2 :(得分:0)

使用PSR名称组织您的模型,即产品(不是product_list),一旦您习惯了,您将看到更少的错误

模型产品默认会查找表名“products”(模型名称的复数),如果你想要更改它,设置受保护的类var $ table =“your_table_name”虽然不推荐,因为如果你使用关系,你必须在任何地方设置表名,最好遵循惯例

如果你运行php artisan key时你的.env没有影响或更新:生成可能你的权限不正确

在.env上设置chmod 755,在存储和引导文件夹上设置755或777。

检查数据库连接是否正常,通过artisan运行迁移

php artisan migrate 在基本它将创建迁移表

如果仍未加载您的类,请运行composer update

composer dump-autophp artisan optimize将编译类

在ubuntu系统上,最好创建一个新用户并使用相同而不是使用root(或AWS EC2上的ubuntu用户)更新项目文件夹