【问题标题】:I need to use raw sql data as seeder我需要使用原始 sql 数据作为播种机
【发布时间】:2020-08-25 00:20:33
【问题描述】:

我有这个 SQL 数据,我想把它用作播种机。现在我的团队负责人说“这是一个转储”,另外他说我可以将此 sql 数据用作 SEEDER,但首先我需要做一些事情才能用作播种机。

这里有人可以知道我应该首先做什么吗?

enter image description here

【问题讨论】:

  • 首先您必须创建数据库和要插入种子的表
  • 完成了,我实际上已经为此创建了迁移文件。谢谢
  • 你的种子现在有效了吗?
  • 不,还没有,我试过这个代码 $sql = file_get_contents(database_path() . '/seeds/country.sql'); DB::语句($sql);仍然给我一个错误。谢谢

标签: php regex laravel laravel-seeding


【解决方案1】:
  • 没有 Laravel: 根据您使用的 MYSQL 客户端(PhpMyAdmin、Workbench 等),如果您已经在数据库中创建了表,则只需将文件导入客户端,客户端将为您完成剩下的工作。搜索如何为您的特定 MySQL 客户端导入转储文件。

  • 使用 Laravel: 我要做的是

    • 我将查询本身(以 INSERT INTO 开头的部分)复制到存储文件夹中的另一个文件中(比如说在 storage/app/country.sql 中)
    • 现在在播种器类中,我得到了我用DB::insert 插入的文件的内容
// database/seeds/CountrySeeder.php
class CountrySeeder extends Seeder
{
    public function run ()
    {
        $sql = file_get_contents(storage_path('app').'/country.sql');
        DB::insert($sql);
    }
}

确保在DatabaseSeeder 类中调用了该类

// database/seeds/DatabaseSeeder.php
class DatabaseSeeder extends Seeder
{
    public function run ()
    {
        $this->call([
            // ... 
            CountrySeeder::class,
            // ... other seeders
        ]);
    }
}

【讨论】:

  • 1 C:\xampp\htdocs\geoloctask\geotask\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458 PDOException::("SQLSTATE[42S02]: 基表或未找到视图:1146 表 'geoloc.country' 不存在”)2 C:\xampp\htdocs\geoloctask\geotask\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458 PDO::prepare (" 还是这个错误,谢谢 :)
  • 数据库中不存在表country表!确保您手动创建它(通过您的 MySQL 客户端)或为其创建迁移文件。
  • 你是直接将文件导入数据库还是从 Laravel 播种?
猜你喜欢
  • 2012-10-26
  • 2013-01-16
  • 2015-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多