如何将mysql中的表添加到laravel迁移中
我在如何将mysql中的表添加到laravel迁移中,mysql,laravel,laravel-6,laravel-migrations,Mysql,Laravel,Laravel 6,Laravel Migrations,我在MySQL中创建了一个现成的数据库。现在我创建了一个新的laravel6项目。 是否可以在不丢失数据的情况下将MySQL数据库中的表添加到laravel migrations中?还有一种方法可以生成从MySQL到laravel的迁移吗?首先,您必须创建迁移() 下一轮 php artisan migrate 最后,如果要更改表中的某些列,请将数据导入到新表中。。您可以创建 php artisan make:migration 在迁移过程中,您可以编写以下代码: Schema::tabl
MySQL
中创建了一个现成的数据库。现在我创建了一个新的laravel6
项目。
是否可以在不丢失数据的情况下将
MySQL
数据库中的表添加到laravel migrations
中?还有一种方法可以生成从MySQL
到laravel
的迁移吗?首先,您必须创建迁移()
下一轮
php artisan migrate
最后,如果要更改表中的某些列,请将数据导入到新表中。。您可以创建
php artisan make:migration
在迁移过程中,您可以编写以下代码:
Schema::table('users', function (Blueprint $table) {
$table->string('name', 50)->change();
});
确保将条令/dbal依赖项添加到composer.json文件中
composer require doctrine/dbal
您只需检查表是否已经存在。
在迁移过程中执行以下操作:
if(!Schema::hasTable('TABLE_NAME')) {
Schema::create('TABLE_NAME', function (Blueprint $table) {
$table->bigIncrements('id');
...
}
}
官方文档:首先,您必须使用cli创建表php artisan migration:create_name_table,然后运行命令php artisan migrate我认为OP询问的是创建Laravel应用程序之前存在的表。我刚刚做了“php artisan make:migration”,得到的参数“不够(缺少:“name”)。@Rwd,这些表在创建Laravel应用程序之前就已经存在了。在这种情况下,您必须使用if(!Schema::hasTable('users')){…}
并将其包装到架构创建中。如果没有,如果表已经存在,php-artisan-migrate
将在错误中运行。应该能解决你的问题。它将mysql数据库转换为laravel迁移脚本是的,你说得对,我在询问之前尝试过,但它只适用于laravel 5。laravel似乎没有这个命令,也许你需要自己做。使用mysqldump-u root-p--no data yourdatabase>schema.sql
读取schema.sql中的每个表,然后将它们转换为migration dir。这样,您就可以创建一个虚拟的laravel 5应用程序来生成迁移,并将它们复制到laravel 6/7应用程序中
if(!Schema::hasTable('TABLE_NAME')) {
Schema::create('TABLE_NAME', function (Blueprint $table) {
$table->bigIncrements('id');
...
}
}