QGIS连接MySQL数据库,解决属性表乱码和数据不显示问题

文章目录

  • 1、QGIS连接MySQL数据库
  • 2、属性表乱码问题
  • 3、要素在地图中不显示

在这篇文章中,主要记录在QGIS中连接MySQL数据库的方法,加载MySQL中的空间数据,以及在连接之后属性表乱码和数据不显示问题的解决方法。

1、QGIS连接MySQL数据库

在QGIS中,默认的连接列表中可以看到PostGIS、MSSQL、Oracle、DB2等数据库连接,不包括MySQL,MySQL需要在数据资源管理器中添加连接。
QGIS连接MySQL数据库,解决属性表乱码和数据不显示问题_第1张图片
图层 - 数据资源管理器
图层 - 数据资源管理器
在数据资源管理器中,按照下图顺序,依次选择矢量 — 数据库 —MySQL — 新建,然后填入数据库名称、注记、数据库、端口、用户名、密码等。

  • 名称:可以是任何你喜欢的名字
  • 主机:MySQL主机或IP地址
  • 数据库:要连接的数据库名称,必填,否则连接不到
  • 用户/密码:MySQL的用户名密码
    QGIS连接MySQL数据库,解决属性表乱码和数据不显示问题_第2张图片
    点击OK,添加。此时会自动展示可以添加的数据QGIS连接MySQL数据库,解决属性表乱码和数据不显示问题_第3张图片
    选择想要在QGIS中打开的数据,确定,就可以在QGIS的图层列表中看到添加的数据。
    QGIS连接MySQL数据库,解决属性表乱码和数据不显示问题_第4张图片

2、属性表乱码问题

虽然图层列表中可以看到图层,但在地图上并没有显示相应的要素,首先打开属性表查看,发现属性表中出现乱码,考虑是编码方式问题
QGIS连接MySQL数据库,解决属性表乱码和数据不显示问题_第5张图片
打开图层属性,选择源,将数据源编码改为UTF-8
QGIS连接MySQL数据库,解决属性表乱码和数据不显示问题_第6张图片

再次打开属性表,显示正常
QGIS连接MySQL数据库,解决属性表乱码和数据不显示问题_第7张图片
在这个过程中,我是逐个图层进行设置的,没找到批量修改或者修改默认编码方式的问题,希望后续能改进。

3、要素在地图中不显示

属性表正常显示后,在地图中要素依然无法显示。尝试将要素导出重新保存
QGIS连接MySQL数据库,解决属性表乱码和数据不显示问题_第8张图片
导出后要素正常显示
QGIS连接MySQL数据库,解决属性表乱码和数据不显示问题_第9张图片
对于要素显示这一点,我没搞明白为什么导出后可以正常显示,但问题确实解决了…看到有大佬通过建虚拟图层的方法显示数据(https://segmentfault.com/a/1190000038679195),我尝试了一下也是可以的,可能是因为MySQL数据库的支持问题,不太懂,暂时不纠结了。

你可能感兴趣的:(QGIS,mysql)