sailsjs中的数据迁移方式
目录
在sailsjs
中,有三种数据迁移方式: safe
,alter
和drop
.在开发环境和测试环境中,直接使用alter
会很方便的进行数据的迁移.
官方对三种方式的说明 具体可查看此链接
方式 | 解释 |
---|---|
safe |
系统不会主动迁移数据(库),必须手动操作 |
alter |
自动迁移数据字段,并试图保存现有数据 |
drop |
每次启动系统时,删除所有数据,并且每次重建model |
在实际工作中碰到两个问题
alter
方式中,当数据库中有比较多的数据的时候(其实也不多,比如6000个用户),在网速情况不好的情况,会出现两个问题.- 在正式环境中,无法使用
alter
,导致在正式环境下,必须手动进行数据库的表结构修改.
alter
的两个问题
官方说明如下:
Auto-migrations - Auto-migrations should
never be enabled when connecting to a database with data you care about
. Instead, use auto-migrations with fake data, or with cached data that you can easily recreate.
But if you are using drop or alter,Sails will load every record in your development database into memory, then drop and recreate the physical layer representation of the data
(i.e. tables/collections/sets/etc.)
标注的地方,说明一下.
在alter
模式下,sails
在启动的时候,会把每一条放到内存中,然后删除并且重建数据.这就会导致下面两个问题
启动时间超时
我的数据在6000
条,网速在1m
的情况,启动大约会有4分钟,想想就太恐怖了.当然在我的正式环境中,10000
条数据,10秒内就可以搞定了.sails
的默认超时时间是60*1000ms
,也就是1分钟.
解决办法: 延长超时时间.
配置如下:
|
|
提示: 网上说只需要配置orm
就可以,但是经过实际验证,需要修改以上两个地方
大专栏 sailsjs中的数据迁移方式lass="headerlink" title="超时后未被验证的数据会被删除">超时后未被验证的数据会被删除
按照上面的说法,在alter模式下,sails在启动的时候,会把每一条放到内存中,然后删除并且重建数据.
,也就是说,如果数据超时时间到了,还有些数据没有被重建完,那这些数据就会被丢弃,也就造成了数据库的数据丢失.
这就是官方说的 never``never``never
不要在正式环境中使用alter
数据迁移方式
鱼和熊掌想兼得
出于实际情况(就是没钱找DBA),我既想使用sails
便捷的数据方式,但是也要保证我的正式环境的数据不会被丢弃
.
原文地址:https://www.cnblogs.com/wangziqiang123/p/11696540.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- E-BERT,电商领域语言模型优化实践
- PyQt5 技术篇-透明窗口设置方法,窗口透明度的设置
- 为hexo增加gitalk评论系统
- Python 技巧篇-用print打印输出但不换行方法
- gitalk 自动初始化
- 给hexo申请证书并设置https
- Python 面向对象-如何查看类的父类,外部如何获取类的名字
- Python操作excel:用xlwt设置excel单元格背景颜色,给字体加粗。【附】颜色表
- Python+selenium 自动化-获取当前页面的url地址,打开指定的url地址
- PyQt5 技术篇-窗口置顶不生效解决办法,setWindowFlags()设置不生效解决办法
- 使用hooks自动监测git仓库更改并拉取
- 重新部署hexo
- 关于前端哈希加密密码的思考
- PyQt5 技术篇-设置下拉框默认值,获取当前选择的内容
- 杜绝重复-ssh-key