目录

mac m1 安装sqlserver踩坑经历

为什么安装sqlserver

上数据库系统概论需要用到数据库,按道理来说应该使用开源的mysql,但老师说因为学校用的是sqlserver,我们考试也用这个,所以我也就得用。

法一:云数据库(❌

在mac上直接安装微软的产品,想都别想~所以我首先把注意力放在了云上。众所周知,像阿里云、腾讯云等服务商经常有云数据库优惠活动,购买一个1核1G的mysql数据库一年的时间也用不到10元,性价比拉满。

但是sqlserver数据库贵的要死啊,可能是因为比较小众而且微软要从中赚授权费吧。

于是我又想到了微软自家不是有个云平台Azure吗,以前白嫖过他家的服务器,体验蛮不错。满怀期待登上去看,需要外币信用卡才能注册,对国内用户极不友好。

正当我灰心丧气打算关闭页面时,突然发现Azure有学生套餐!看了下介绍,好像福利挺多的,优惠时间也蛮长,在我的印象中国外这种大厂还是很大气的。然后我就兴高采烈的用学校邮箱注册了学生账户(不需要外币信用卡)。进去一看,哟吼~,产品还挺多,有一堆不认识的。我赶紧搞了一个sqlserver,过程也并不复杂,唯一的缺点是服务器只能选择在美国东部,裸连速度很慢。不过我有代理,供学习使用应该够了。

气人的是,过了两天微软给我发邮件,说我的学生账户可以使用的免费额度没了…白嫖失败。对于穷学生来说,这个法子行不通。

法二:在本地安装(❌

我发现sqlserver可以使用docker安装。我对docker印象蛮好的,认为它可以解决大多环境问题。 我的本来想法是这个方案应该非常easy,两步就能搞定,第一步安装docker,第二步run个镜像就能用了。但是,在m1的mac上,docker已经不是原来的那个docker了。

安装docker desktop确实非常方便,只要在官网下载,然后点下一步就能装好,比windows方便多了(在win上你得先跑一个linux虚拟机)。

第二步拉取镜像,跑容器发现跑不起来,会报错,怀疑是m1芯片问题。

为了确认我不是个例,我还去dockerhub看了下,果然评论里都是说这个问题的。它就是不支持m1芯片。

从此之后,我再也不吹docker了,看来它并不能解决所有环境问题。

有人倒是成功了,先跑一个pd虚拟机,再在虚拟机里跑docker,搁这套娃呢?看来在本地安装是指望不上了。

法三:云服务器上使用docker(勉强✅

不能在m1的mac上的docker里安装,在传统的linux上总可以安装吧?

这个方案确实可行,但也遇到了小坑。

众所周知,便宜点云服务器有很多,10多块钱就能搞一个1核2G的linux云服务器。执行和法二相同的操作:

sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=密码"    -p 1433:1433 --name sql1 --hostname sql1 -d mcr.microsoft.com/mssql/server:2019-latest

没报错,看来要成功了?真是踏破铁鞋无觅处,得来全不费功夫呀,哈哈~

然后再打docker ps -a,看下容器跑起来没有。结果发现没有,看来高兴早了qwq。

为什么呢,打docker logs 容器ID看下原因,他娘的,说内存至少要2000mb才能运行。

我的云服务器内存就是2G,实际使用时系统和其他服务会占用一些内存,所以留给sqlserver的内存肯定不足2G了。但我还是抱着侥幸心理,在docker启动容器的命令里分配了2000mb的内存,仍然不行,我试了阿里云,腾讯云的1核2G轻量化应用服务器,都是不行的。

组里面有个2核4G的腾讯云轻量化应用服务器,可以运行!但这服务器是组里的…算了,直接拿来用吧。

麻烦就是端口开不了,自己电脑的navicat连不上,只能ssh到服务器上用命令行工具。

哭了,折腾两节课也没能很好解决这个问题。

总结

如果说windows能做100%的事情,那么M1 Mac 只能做80%。但是我还是会选择m1 mac,因为在它能做的事情范围之内,你能体验到极致的丝滑。