安装diesel遇到环境变量的大坑。

要mysqlclient

错误:

error: could not find native static library mysqlclient, maybe an -L flag is missing?
error: Could not compile mysqlclient-sys.

解决方案:需要指定mysqlclient.lib文件的位置,找到这个文件的根目录,添加永久用户变量(高级环境设置里的用户变量会增加这一条):

setx MYSQLCLIENT_LIB_DIR "C:\Program Files\MySQL\MySQL Server 5.7\lib"

这里也有个大坑,详见章节“平台版本冲突”

要链接SQLlite

错误:

Compiling diesel_cli v1.4.1
error: linking with link.exe failed: exit code: 1181
|
= note: “C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\link.exe” “/NOLOGO” “/NXCOMPAT” “/LIBPATH:C:一坨一坨省略”
= note: LINK : fatal error LNK1181: cannot open input file ‘sqlite3.lib’

error: aborting due to previous error
error: failed to compile diesel_cli v1.4.1, intermediate artifacts can be found at C:\Users\me\AppData\Local\Temp\cargo-installWriLzQ

Caused by:
could not compile diesel_cli

To learn more, run the command again with --verbose.

解决方法:因为我们开发只用mysql,所以执行

cargo install diesel_cli --no-default-features --features mysql

相比cargo install diesel_cli,从100多个依赖,变成95个。

平台版本冲突

问题

= note: libcpmt.lib(xthrow.obj) : error LNK2038: mismatch detected for ‘_MSC_VER’: value ‘1900’ doesn’t match value ‘1800’ in libmysqlclient_sys-cd45e48baa434a2c.rlib(net_serv.obj)
libcpmt.lib(syserror.obj) : error LNK2038: mismatch detected for ‘_MSC_VER’: value ‘1900’ doesn’t match value ‘1800’ in libmysqlclient_sys-cd45e48baa434a2c.rlib(net_serv.obj)
LINK : warning LNK4098: defaultlib ‘LIBCMT’ conflicts with use of other libs; use /NODEFAULTLIB:library
libmysqlclient_sys-cd45e48baa434a2c.rlib(xml.obj) : error LNK2001: unresolved external symbol sprintf
libmysqlclient_sys-cd45e48baa434a2c.rlib(libmysql.obj) : error LNK2001: unresolved external symbol sprintf
libmysqlclient_sys-cd45e48baa434a2c.rlib(client.obj) : error LNK2001: unresolved external symbol sprintf
libmysqlclient_sys-cd45e48baa434a2c.rlib(my_time.obj) : error LNK2001: unresolved external symbol sprintf

原因:我安装的是visual studio 2015(MSC_VER是1900),而mysqlclient.lib是用mysql5.7,它是用visual studio 2013 (MSC_VER是1800)编译的,包括里面的mysqlclient.lib,因此存在冲突。

解决办法:要么安装mysql 8,它的mysqlclient.lib符合版本要求;要么安装mysql connector 高版本,C:\Program Files\MySQL\MySQL Connector C 6.1\lib\vs14下面的mysqlclient.lib符合版本要求。我用的是第二个方法(需要相应修改环境变量)。

安装mysql-connector-c-6.1.11-winx64之后,终于看到了vs14:

我试过用mysql installer删除mysql connector再重新安装,这种方法还是低版本的(C:\Program Files\MySQL\MySQL Connector C 6.1\lib\下面最高是vs12,没有vs14)

变更环境变量记得重启terminal

结果

一 一搞定上述三个问题后终于完成diesel_cli的安装,此过程脑海中一遍遍响起可爱多的 “这就是翔,一坨一坨的翔”

参考资料

  1. https://blog.csdn.net/leo__1990/article/details/89893951
    windows上安装MySQL 8 依赖Microsoft Visual C++ 变化

  2. https://blog.csdn.net/u012814856/article/details/76343540
    问题解决:error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900”

  3. https://baike.baidu.com/item/_MSC_VER/9468279?fr=aladdin
    visual studio版本和MSC_VER的值

  4. https://github.com/diesel-rs/diesel/issues/1286
    在官方的issue里,解决方案众说纷纭。

  5. https://blog.csdn.net/wangmarkqi/article/details/104618575
    前人遇到坑(我比它还多一个)

windows7安装用于mysql的diesel的坑相关推荐

  1. windows7 安装MySQL 解决报错 服务没有响应控制功能

    windows7 安装MySQL 1. 下载MySQL 官网:https://dev.mysql.com/downloads/installer/ 下载想要的版本. 下载的是压缩文件,解压到安装目录. ...

  2. Linux 环境下安装 MySQL,各种踩坑、疑难杂症 | 原力计划

    作者 | 红颜祸水nvn 来源 | CSDN博客,责编 | 夕颜 头图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 本文中,作者总结了在使用Linux CentOS 6 ...

  3. mysqlclient==1.3.7对应mysql版本_MySQL 5.7.30 的安装/升级(所有可能的坑都在这里)...

    由于之前电脑上安装的MySQL版本是比较老的了,大概是5.1的版本,不支持JSON字段功能.而最新开发部门开发的的编辑器产品,使用到了JSON字段的功能. 因此需要升级MySQL版本,升级的目标版本是 ...

  4. mysql5.7.76安装,MySQL 5.7.30 的安装/升级(所有可能的坑都在这里)

    楔子 由于之前电脑上安装的MySQL版本是比较老的了,大概是5.1的版本,不支持JSON字段功能.而最新开发部门开发的的编辑器产品,使用到了JSON字段的功能. 因此需要升级MySQL版本,升级的目标 ...

  5. 阿里云ECS服务器配置LAMP时安装配置mysql数据库填坑(二)

    阿里云ECS服务器配置LAMP时安装配置mysql数据库填坑(二) 上篇文章讲到的是安装apache服务器时遇到的坑,经过排错总算是把Apache的坑填完了,没想到安装mysql又跳坑里了,真是不得不 ...

  6. 下载perl的mysql模块_安装用于操作MySQL的Perl模块

    在我使用Webmin(version 1.480)管理FreeBSD主机上的MySQL数据库服务器时出现: "警告:您的系统未安装Perl 模块 DBI 和 DBD::mysql,Webmi ...

  7. Linux最小体积mysql安装_Linux下安装MySQL以及一些小坑

    第一次写博客,各位凑合着看吧(假装有人看). 我这里使用的是centos7. 1.首先打开终端,查看有没有安装过MySQL: [root@localhost lyp]# rpm -qa | grep ...

  8. 阿里云服务器快速安装Mysql,贴心手把手教你安装,本人踩过很多坑!(我的服务器系统CentOS 7.8 64位)

    1.先查询服务器是否安装了Mysql数据库 rpm -qa | grep mysqlrpm -e 文件名(卸载数据库,没有就跳过) 2.可以先新建一个文件夹 mkdir 文件夹名 3.下载mysql包 ...

  9. 记一次安装mysql服务的踩坑记录

    今天在搞sharding-jdbc做分库分表.读写分离的操作.为了更深刻的了解,于是自己就在本机搞了两个mysql服务.发现在创建表的时候总是报这个错 [Err] 1055 - Expression ...

最新文章

  1. mysql binlog_checksum_【原创】研发应该懂的binlog知识(下)
  2. SUPPORTDIR引用的文件的加入
  3. java使用链栈实现数制转换
  4. socket的NIO操作
  5. 计算理论 形式语言与自动机_下推式自动机(PDA)| 计算理论
  6. 使用git版本管理时的免密问题
  7. ajax如何向action发送数据的
  8. uniapp 微信小程序生成二维码
  9. 怎么恢复优盘里隐藏的数据 u盘隐藏数据恢复教程
  10. 《智慧城市》顶层设计解读
  11. 数组公式和普通公式,差别在于思维方式的不同! 要用看数组的方式看待数据
  12. 3d在线展示_手表三维商品展示解决方案
  13. 计算机系统概论基本知识
  14. 华为Mate50和小米13 参数对比
  15. 最新初中级前端面试题合集一,你确定不看一看嘛
  16. WebDAV之葫芦儿·派盘+人升
  17. 数据清洗的几种常用手段
  18. Pandas 最全的使用方式(下)
  19. 怎样设置word背景图片每一页都不同
  20. 为什么极品飞车服务器维修,极品飞车:无极限赛车无法连接服务器是什么原因...

热门文章

  1. The 15th Chinese Northeast Collegiate Programming Contest D题
  2. 什么是AWS认证?AWS认证通过率怎么样?
  3. 使用手机陀螺仪 完成一个简单的小游戏
  4. 单目图像深度估计 - 尺度篇:Make3D
  5. OSChina 周四乱弹 —— 想搬砖?你够资格吗?
  6. Innovus dbGet常用命令合集
  7. 惠普首席技术官描绘移动技术未来愿景
  8. pcie-0-20180723-众多pcie插槽
  9. 免费全能查词翻译软件网易有道词典 Mac可以做什么
  10. PCB设计案例分析:后焊元件焊盘开孔过大的危害