Laravel迁移|在原始SQL中删除/创建表没有错误,没有影响

时间:2019-07-04 06:16:42

标签: mysql laravel import migration

对于一个新的Laravel项目,我需要使用一个现有的MySQL数据库(176个表)。我不想为每个现有表创建Laravel迁移,因此我已经将数据库结构导出到sql文件。

在迁移中,我想执行SQL文件,如下所示:

public function up()
{
   DB::unprepared(file_get_contents('/path/to/file.sql'));
}

unprepared返回true,但似乎导入导入不会(完全)执行。没有错误,没有影响(有时,创建了1或2个表,例如在执行sql文件之前删除并重新创建数据库之后)。

当我使用mysql source /path/to/file.sql执行此文件时,导入工作正常(将报告版本差异引起的一些错误,但继续执行)。

我的问题:出于测试目的,我想在迁移过程中从SQL文件创建176 old/existing tables。在迁移过程中,我需要更改一些表。

我不想为每个表创建迁移。

1 个答案:

答案 0 :(得分:0)

您可以按照以下步骤对所有表进行反向迁移:-

1)编写者需要--dev“ xethron / migrations-generator”

2)在bootstrap / app-$ app-> register(\ Way \ Generators \ GeneratorsServiceProvider :: class)中;    $ app-> register(\ Xethron \ MigrationsGenerator \ MigrationsGeneratorServiceProvider :: class);

3)在bootstrap / app.php中添加

class Application extends Laravel\Lumen\Application
{
    /**
     * Get the path to the application configuration files.
     *
     * @param string $path Optionally, a path to append to the config path
     * @return string
     */
    public function configPath($path = '')
    {
        return $this->basePath.DIRECTORY_SEPARATOR.'config'.($path ? DIRECTORY_SEPARATOR.$path : $path);
    }
}

if (!function_exists('config_path')) {
    /**
     * Get the configuration path.
     *
     * @param  string $path
     * @return string
     */
    function config_path($path = '')
    {
        return app()->basePath() . '/config' . ($path ? '/' . $path : $path);
    }
}

if (!function_exists('app_path')) {
    /**
     * Get the path to the application folder.
     *
     * @param  string $path
     * @return string
     */
    function app_path($path = '')
    {
        return app('path') . ($path ? DIRECTORY_SEPARATOR . $path : $path);
    }
}

class_alias('Illuminate\Support\Facades\Config', 'Config');



$app = new Application(
    realpath(__DIR__.'/../')
);

4)写php artisan migration:在终端中生成

5)更改

$app = new Application(
    realpath(__DIR__.'/../')
); 

$app = new Laravel\Lumen\Application(
    realpath(__DIR__.'/../')
);

在bootstrap / app.php中