您好,欢迎访问沃航(武汉)科技有限公司官方网站
浅谈sqlite与mysql的数据库语法差异
2021-01-08 22:30:57

        由于一些原因,小沃将自己的官方网站从原来的阿里云迁移到了justg的vps上,服务器配置也从原理的1核1G变为了1核512M。虽然服务器性能所有下降,但是毕竟小沃的官网是使用了百度的cdn的,因此应付高并发还是没有什么问题的。考虑到服务器性能的下降,小沃决定做一件一直想做但是又没有做的事情---将网站从使用mysql数据库改为使用sqlite数据库。至于为什么要做这个调整,主要是考虑到置于cdn后的网站并发本来就不可能高,而且sqlite数据库在idle状态下消耗内存是0,对于内存降低的小沃所用官网服务器,还是比较合适的。

由于小沃官网原来连接数据库用的就是pdo,因此从mysql改为sqlite基本没什么难度,下面介绍下mysql与sqlite的语法差异。

1、left join与left out join

    在mysql中有内连接,左连接,右连接,交叉连接4种连接,但是sqlite中没有右连接。并且写法有所不同。

    可以直接写成out join或是left out join,但是mysql中最长用的left join却无法被识别。

2、不支持md5等加密函数

    在mysql中可以直接使用MD5这个函数由数据库帮我们计算,但是sqlite中,这个函数原生不支持。因此最好不要直接使用这个函数。

3、没有NOW()函数,CURRENT_TIMESTAMP也是格林时间的表达方式

    当使用datetime类型的时候,常常将默认值设置为NOW()或是CURRENT_TIMESTAMP,但是你会发现,生成的默认时间永远比实际使用晚8小时。因此遇到这个问题,官方的建议是将默认值设置为datetime('now', 'localtime'),具体设置方式如下:

create table log(
    logtime TIMESTAMP NOT NULL DEFAULT (datetime('now', 'localtime')
)

4、创建表时主键不能用unsigned big int

    在mysql中,主键一般会设置为自增长,并且类型使用unsigned big int,但是在sqlite中,要想自增长就必须设置为INTEGER型。


文章作者:沃航科技

联系我们
地址:
武汉市洪山区蓝晶国际7栋903
QQ:
932773931
电话:
027-59761089-806
手机:
13397158231
邮箱:
jevian_ma@worldflying.cn
×
物联网组态平台
试用账号:123456
试用密码:123456
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn
×
积木编程平台
试用方式:试用手机号码注册即可使用
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn