Skip to main content

Getting errors when trying to seed tables in Laravel

When I'm trying to execute php artisan migrate:fresh --seed command I'm getting errors. I don't understand what they are all about and I don't know what could cause them. The description of the problem is below.

Factory file PostFactory.php:

<?php

namespace Database\Factories;

use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;

class PostFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = Post::class;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        $title = $faker->realText(rand(10, 40));
        $short_title = \Illuminate\Support\Str::length($title) > 30 ? mb_substr($title, 0, 30) . "..." : $title;
        $created = $faker->dateTimeBetween("-30days", "-1days");

        return [
            "title" => $title,
            "short_title" => $short_title,
            "author_id" => rand(1, 4),
            "descr" => $faker->realText(100, 500),
            "created_at" => $created,
            "updated_at" => $created
        ];
    }
}

DatabaseSeeder.php:

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        \App\Models\User::factory()->count(4)->create();
        \App\Models\Post::factory()->count(15)->create();
    }
}

When I execute php artisan migrate:fresh --seed I'm getting those errors:

Illuminate\Database\QueryException 

  SQLSTATE[HY000] [2002]   , ..      .
 (SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE')

  at C:\xampp\htdocs\laralove\vendor\laravel\framework\src\Illuminate\Database\Connection.php:692
    688▕         // If an exception occurs when attempting to run a query, we'll format the error
    689▕         // message to include the bindings with SQL, which will make this exception a   
    690▕         // lot more helpful to the developer instead of just the database's errors.     
   Illuminate\Database\QueryException 

  SQLSTATE[HY000] [2002]   , ..      .
 (SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE')

  at C:\xampp\htdocs\laralove\vendor\laravel\framework\src\Illuminate\Database\Connection.php:692
    688▕         // If an exception occurs when attempting to run a query, we'll format the error
    689▕         // message to include the bindings with SQL, which will make this exception a
    690▕         // lot more helpful to the developer instead of just the database's errors.
    691▕         catch (Exception $e) {
  ➜ 692▕             throw new QueryException(
    693▕                 $query, $this->prepareBindings($bindings), $e
    694▕             );
    695▕         }
    696▕

  1   C:\xampp\htdocs\laralove\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70
      PDOException::("SQLSTATE[HY000] [2002]   , ..      .
")

  2   C:\xampp\htdocs\laralove\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70
      PDO::__construct("mysql:host=localhost;port=3306;dbname=laralove", "root", "", [])

I've checked the lines in the files provided in the error description but I've no clue what can be causing the errors.

Any help would be very appriciated


UPD 0:

I've tried to change 'localhost' to '127.0.0.1' in config files as @Rwd suggested. And previous errors are gone. But now I'm getting other errors:

ErrorException 

  Undefined variable: faker

  at C:\xampp\htdocs\laralove\database\factories\PostFactory.php:24
     20▕      * @return array
     21▕      */
     22▕     public function definition()
     23▕     {
  ➜  24▕         $title = $faker->realText(rand(10, 40));
     25▕         $short_title = \Illuminate\Support\Str::length($title) > 30 ? mb_substr($title, 0, 30) . "..." : $title;
     26▕         $created = $faker->dateTimeBetween("-30days", "-1days");
     27▕
     28▕         return [

  1   C:\xampp\htdocs\laralove\database\factories\PostFactory.php:24
      Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Undefined variable: faker", "C:\xampp\htdocs\laralove\database\factories\PostFactory.php", [])

  2   C:\xampp\htdocs\laralove\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Factories\Factory.php:385
      Database\Factories\PostFactory::definition()

UPD 1:

Replaced $faker with $this->faker as @Cristea suggested and now getting those previous errors:

  1   C:\xampp\htdocs\laralove\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70
      PDOException::("SQLSTATE[HY000] [2002]   , ..      .
")

  2   C:\xampp\htdocs\laralove\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70
      PDO::__construct("mysql:host=localhost;port=3306;dbname=laralove", "root", "", [])

localhost is still changed to 127.0.0.1 in .env and database.php as @Rwd suggested



source https://stackoverflow.com/questions/68107187/getting-errors-when-trying-to-seed-tables-in-laravel

Comments

Popular posts from this blog

Where and how is this Laravel kernel constructor called? [closed]

Where and how is this Laravel kernel constructor called? public fucntion __construct(Application $app, $Router $roouter) { } I have read the documentation and some online tutorial but I can find any clear explanation. I am learning Laravel and I am wondering where does this kernel constructor receives its arguments from. "POSTMOTERM" CLARIFICATION: Here is more clarity.I have checked the boostrap/app.php and it is only used for boostrapping the interfaces into the container class. What is not clear to me is where and how the Kernel class is instatiated and the arguments passed to the object calling the constructor.Something similar to; obj = new kernel(arg1,arg2) or, is the framework using some magic functions somewhere? Special gratitude to those who burn their eyeballs and brain cells on this trivia before it goes into a full blown menopause alias "MARKED AS DUPLICATE". To some of the itchy-finger keyboard warriors, a.k.a The mods,because I believe in th...

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console...

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype