3分钟短文:书接上回,Laravel数据库迁移的那些个小技巧

简介: 继续深入laravel的数据库迁移功能

引言

使用laravel的数据库迁移功能进行表的创建,和迁移回滚之后,我们继续说说在设计中
表结构的更改之后的处理。以及如何为数据库填充一些伪数据作为测试。

图片

数据约束

上一章说到数据库迁移回滚,可以手动控制回滚到哪一批次的迁移位置。比如我们创建的 events 表,
如果在迁移文件内添加字段,代码如下:

pic

我们在数据库表中间的位置添加了一个 venue 字段。然后使用迁移指令

php artisan migrate

就可以应用这些改变了。

很多时候,并不是说我们创建了表,并且指定了字段名,和字段数据类型就算完事儿了。
我们需要空与非空约束,默认值约束,主键约束,外键约束等等数据库所具有的特性,
这才是关系型数据库的魅力。

比如声明一个布尔类型的值,并声明默认为false:

$table->boolean('confirmed')->default(false);

比如设定一个字符串类型的字段,允许为null:

$table->string('comments')->nullable();

比如设定整型为无符号数:

$table->tinyInteger('age')->unsigned();

在给上面的 age 字段设定默认值:

$table->tinyInteger('age')->unsigned()->default(0);

增删字段

使用迁移功能增删数据库表的字段,与之前讲的创建迁移文件相同,
首先创建一个迁移文件,使用以下脚手架指令:

php artisan make:migration add_enabled_to_events_table --table=events

本迁移文件我们要为表 events 添加一个 enabled 的布尔类型的字段。上述指令输出内容如下:

Created Migration: 2020_09_28_213116_add_enabled_to_events_table

现在为该迁移文件添加 up & down 方法,指定迁移开始和回滚所要执行的动作,
我们仅仅是添加一个字段,或者在回滚的时候,删除一个字段,代码如下图:

pic

完成后在命令行执行迁移指令:

php artisan migrate

输出结果如下:

Migrating: 2020_09_28_213116_add_enabled_to_events_table
Migrated: 2020_09_28_213116_add_enabled_to_events_table

上面我们并没有指定添加的字段在哪个字段的后面,所以laravel所组装的SQL就默认是最后一个字段之后。
大家应该不陌生SQL语句追加字段的语法:

ALTER TABLE contacts ADD last_name varchar(40) NOT NULL AFTER contact_id;

laravel的迁移指令也允许我们指定某个追加的字段位于某个列之后:

$table->boolean('enabled')->after('name');

迁移状态

查看当前数据库的迁移状态,会让我们查看创建的迁移文件中哪些被应用了,
哪些还没有被应用,这样在数据库表比较多的情况下,可以有效地排查问题。

laravel提供了脚手架命令:

php artisan migrate:status

输出内容类似下图:

pic

还有两个高危指令,一个是 magrate:reset 回滚所有的迁移,不同于 migrate:rollback 仅回滚某一批次的迁移;
还有一个是 migrate:refresh,如果你修改了某些迁移过的文件,这个指令会刷新所有修改的变更并应用。

这两个都要慎用!

写在最后

本文是对上一章所述laravel数据库迁移功能的补充。数据库迁移是一个比较大的动作,
特别是已经上线生产的应用数据库,如果非到更新迁移的地步不可,需要预期做好演练,
以应对可能的突发事故。

Happy coding :-)

我是@程序员小助手,专注编程知识,圈子动态的IT领域原创作者

相关文章
|
4月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
5月前
|
存储 运维 关系型数据库
从MySQL到云数据库,数据库迁移真的有必要吗?
本文探讨了企业在业务增长背景下,是否应从 MySQL 迁移至云数据库的决策问题。分析了 MySQL 的优势与瓶颈,对比了云数据库在存储计算分离、自动化运维、多负载支持等方面的优势,并提出判断迁移必要性的五个关键问题及实施路径,帮助企业理性决策并落地迁移方案。
|
7月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
1212 1
|
9月前
|
存储 关系型数据库 数据挖掘
【瑶池数据库动手活动及话题本周精选(体验ADB、 SelectDB,参与 RDS 迁移训练营)】(4.21-4.27)
本文为 “瑶池数据库动手活动及话题精选” 系列第一期,聚焦 SelectDB 日志分析、AnalyticDB Zero-ETL 集成、RDS 迁移训练营三大实战,设积分、实物等多重奖励,同步开启话题互动。点击链接参与,每周解锁数据库实战新场景。
|
4月前
|
JavaScript API PHP
WordPress/Laravel企业官网源码-自适应多端SEO-前后端分离源码含数据库与部署文档​
本文详解如何结合WordPress与Laravel构建现代化企业官网,涵盖响应式设计、SEO优化、前后端分离、数据库安全及自动化部署。通过实战案例展示性能提升成果,并展望AI、云原生与区块链的未来融合方向,助力企业实现数字化增长。
|
9月前
|
SQL Oracle 关系型数据库
用 YashanDB Migration Platform,数据库迁移不再是“高风险动作”
数据库迁移一直是企业信息化中的难题,耗时长、风险高。YashanDB Migration Platform(YMP)提供一站式解决方案,涵盖评估、改写、迁移与校验全流程。其核心能力包括SQL自动适配、智能对象迁移、高性能数据通道及数据对比校验,显著降低人力成本与业务风险。适合从Oracle、MySQL等迁移到YashanDB的企业,以及需异构整合或国产化替代的集团、政府和国企项目。YMP不仅是工具,更是推动数据库国产化的关键平台。
|
7月前
|
关系型数据库 MySQL 数据库
MySQL数据库上云迁移
本文介绍了将数据库迁移到RDS for Mysql的两种主要方法:停服迁移和不停服迁移。停服迁移适合可短暂中断服务的场景,通过mysqldump或DTS完成;不停服迁移适用于需保持业务连续性的场景,推荐使用DTS实现结构、全量及增量数据迁移。文中详细列出了每种方法的具体操作步骤,帮助企业根据需求选择合适的迁移方案。
260 1
MySQL数据库上云迁移

热门文章

最新文章