尝试在 Laravel 中为表播种时出错
Getting errors when trying to seed tables in Laravel
当我尝试执行 php artisan migrate:fresh --seed
命令时出现错误。我不明白他们是怎么回事,我不知道是什么导致了他们。问题描述如下。
出厂文件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();
}
}
当我执行 php artisan migrate:fresh --seed 我得到这些错误:
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", "", [])
我已经检查了错误描述中提供的文件中的行,但我不知道是什么导致了这些错误。
非常感谢任何帮助
UPD 0:
我已尝试按照@Rwd 的建议将配置文件中的'localhost' 更改为“127.0.0.1”。以前的错误都没有了。但现在我遇到了其他错误:
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:
按照@Cristea 的建议将 $faker
替换为 $this->faker
,现在出现了之前的错误:
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", "", [])
.env 中的 localhost 仍更改为 127.0.0.1,并且按照@Rwd 的建议database.php
只需将 $faker
替换为 $this->faker
当我尝试执行 php artisan migrate:fresh --seed
命令时出现错误。我不明白他们是怎么回事,我不知道是什么导致了他们。问题描述如下。
出厂文件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();
}
}
当我执行 php artisan migrate:fresh --seed 我得到这些错误:
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", "", [])
我已经检查了错误描述中提供的文件中的行,但我不知道是什么导致了这些错误。
非常感谢任何帮助
UPD 0:
我已尝试按照@Rwd 的建议将配置文件中的'localhost' 更改为“127.0.0.1”。以前的错误都没有了。但现在我遇到了其他错误:
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:
按照@Cristea 的建议将 $faker
替换为 $this->faker
,现在出现了之前的错误:
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", "", [])
.env 中的 localhost 仍更改为 127.0.0.1,并且按照@Rwd 的建议database.php
只需将 $faker
替换为 $this->faker