Laravel 5.2如何在不丢失数据的情况下更新迁移

Moh*_*wky 22 php laravel-5.2

我正在使用laravel 5.2,我通常会根据项目要求更新我的数据库,所以我想这样做而不会丢失数据库记录.我不是指如何为我的数据库设定种子.我的意思是当我的数据库存在并且我想要更新它时抛出laravel迁移.我要扔Laravel文档,但我什么也没发现,所以我希望找到一个帮助我的人

Mah*_*lam 47

由于您的表中已有数据,因此您可以创建新的迁移文件来更新表,而不是回滚迁移(这将导致数据丢失).假设您有一个users包含列的表name, email, password.您将数据存储在该表中.然后您意识到您还需要添加一个名为mobile_nousers表的新列.为此,您需要创建一个新的迁移文件.命令将是:

php artisan make:migration add_mobile_no_columns_to_users_table --table=users
Run Code Online (Sandbox Code Playgroud)

这样就可以创建一个新的迁移文件.在那里设置列详细信息,使用运行迁移php artisan migrate,这就是全部.您将在users表中拥有此新列,而不会丢失以前存储的数据.

  • 是的你可以。区别在于更新关系有点不同。对于已经声明的带有索引的外键,您需要删除索引,删除外键名称,然后删除列。除非可能会产生错误。您可以在 https://laravel.com/docs/5.3/migrations#indexes 上找到更多详细信息 (2认同)

Akr*_*hid 8

请注意,当您在已有数据的情况下为表添加新列时,您必须为新列设置默认值或使其成为可为空类型..否则最终会出错


Shr*_*pia 6

确保在表中添加新列时,该列应该可以为空,并且不应该是唯一的。否则你将面临错误。因为当创建新列时,它将是空的(不是唯一的)。在这种情况下,您必须回滚迁移。