Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle missing PostGIS with useful warning/error messages #24604

Closed
qgib opened this issue Jun 12, 2017 · 2 comments
Closed

Handle missing PostGIS with useful warning/error messages #24604

qgib opened this issue Jun 12, 2017 · 2 comments
Labels
Bug Either a bug report, or a bug fix. Let's hope for the latter! DB Manager Relating to the DB Manager core plugin

Comments

@qgib
Copy link
Contributor

qgib commented Jun 12, 2017

Author Name: Arjan Mossel (Arjan Mossel)
Original Redmine Issue: 16705
Affected QGIS version: 2.18.9
Redmine category:db_manager


If a PostgreSQL database doesn't have PostGIS installed or configured properly, the database manager errors out without specific indications what's wrong (at least to a novice postgres user as myself). In my case I had installed the postgis extension (in a separate schema), and configured the search_path to include it. I could connect to the database in "Add PostGIS layers" and in the Browser Panel, and see the schemas I had access to, but in the database manager I only got some errors (see below). It turns out I had followed a mistaken snippet for configuring the search_path (assigned a string instead of a list of schemas), so PostGIS was actually not available on the search_path.

I think from a user perspective, two things would be helpful:

  1. Add a check for PostGIS, and a warning if the extension is missing, and display this in the "Add PostGIS Table(s)" dialog, the Browser Panel, and the Database Manager.
  2. Make the Database Manager behave like the "Add PostGIS Table" and Browser Panel, so show the schemas and tables you have access to even if PostGIS is missing (plus the warning).

The errors (stacktrace):

@an error has occurred while executing Python code:

TypeError: 'NoneType' object has no attribute 'getitem'
Traceback (most recent call last):
File "C:/OSGEO41/apps/qgis/./python/plugins\db_manager\db_model.py", line 438, in rowCount
self._refreshIndex(parent, True)
File "C:/OSGEO4
1/apps/qgis/./python/plugins\db_manager\db_model.py", line 489, in _refreshIndex
if item.populate():
File "C:/OSGEO41/apps/qgis/./python/plugins\db_manager\db_model.py", line 164, in populate
if not connection.connect():
File "C:/OSGEO4
1/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\plugin.py", line 96, in connect
return self.connectToUri(uri)
File "C:/OSGEO41/apps/qgis/./python/plugins\db_manager\db_plugins\plugin.py", line 106, in connectToUri
self.db = self.databasesFactory(self, uri)
File "C:/OSGEO4
1/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\plugin.py", line 66, in databasesFactory
return PGDatabase(connection, uri)
File "C:/OSGEO41/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\plugin.py", line 104, in init
Database.init(self, connection, uri)
File "C:/OSGEO4
1/apps/qgis/./python/plugins\db_manager\db_plugins\plugin.py", line 215, in init
self.connector = self.connectorsFactory(uri)
File "C:/OSGEO41/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\plugin.py", line 107, in connectorsFactory
return PostGisDBConnector(uri)
File "C:/OSGEO4
1/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\connector.py", line 134, in init
self._checkGeometryColumnsTable()
File "C:/OSGEO4~1/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\connector.py", line 167, in _checkGeometryColumnsTable
self.has_geometry_columns_access = priv[0]
TypeError: 'NoneType' object has no attribute 'getitem'@

@qgib
Copy link
Contributor Author

qgib commented Oct 17, 2017

Author Name: Jürgen Fischer (@jef-n)


  • description was changed from If a PostgreSQL database doesn't have PostGIS installed or configured properly, the database manager errors out without specific indications what's wrong (at least to a novice postgres user as myself). In my case I had installed the postgis extension (in a separate schema), and configured the search_path to include it. I could connect to the database in "Add PostGIS layers" and in the Browser Panel, and see the schemas I had access to, but in the database manger I only got some errors (see below). It turns out I had followed a mistaken snippet for configuring the search_path (assigned a string instead of a list of schemas), so PostGIS was actually not available on the search_path.

I think from a user perspective, two things would be helpful:

  1. Add a check for PostGIS, and a warning if the extension is missing, and display this in the "Add PostGIS Table(s)" dialog, the Browser Panel, and the Database Manager.
  2. Make the Database Manager behave like the "Add PostGIS Table" and Browser Panel, so show the schemas and tables you have access to even if PostGIS is missing (plus the warning).

The errors (stacktrace):

@an error has occurred while executing Python code:

TypeError: 'NoneType' object has no attribute 'getitem'
Traceback (most recent call last):
File "C:/OSGEO41/apps/qgis/./python/plugins\db_manager\db_model.py", line 438, in rowCount
self._refreshIndex(parent, True)
File "C:/OSGEO4
1/apps/qgis/./python/plugins\db_manager\db_model.py", line 489, in _refreshIndex
if item.populate():
File "C:/OSGEO41/apps/qgis/./python/plugins\db_manager\db_model.py", line 164, in populate
if not connection.connect():
File "C:/OSGEO4
1/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\plugin.py", line 96, in connect
return self.connectToUri(uri)
File "C:/OSGEO41/apps/qgis/./python/plugins\db_manager\db_plugins\plugin.py", line 106, in connectToUri
self.db = self.databasesFactory(self, uri)
File "C:/OSGEO4
1/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\plugin.py", line 66, in databasesFactory
return PGDatabase(connection, uri)
File "C:/OSGEO41/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\plugin.py", line 104, in init
Database.init(self, connection, uri)
File "C:/OSGEO4
1/apps/qgis/./python/plugins\db_manager\db_plugins\plugin.py", line 215, in init
self.connector = self.connectorsFactory(uri)
File "C:/OSGEO41/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\plugin.py", line 107, in connectorsFactory
return PostGisDBConnector(uri)
File "C:/OSGEO4
1/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\connector.py", line 134, in init
self._checkGeometryColumnsTable()
File "C:/OSGEO4~1/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\connector.py", line 167, in _checkGeometryColumnsTable
self.has_geometry_columns_access = priv[0]
TypeError: 'NoneType' object has no attribute 'getitem'@ to If a PostgreSQL database doesn't have PostGIS installed or configured properly, the database manager errors out without specific indications what's wrong (at least to a novice postgres user as myself). In my case I had installed the postgis extension (in a separate schema), and configured the search_path to include it. I could connect to the database in "Add PostGIS layers" and in the Browser Panel, and see the schemas I had access to, but in the database manager I only got some errors (see below). It turns out I had followed a mistaken snippet for configuring the search_path (assigned a string instead of a list of schemas), so PostGIS was actually not available on the search_path.

I think from a user perspective, two things would be helpful:

  1. Add a check for PostGIS, and a warning if the extension is missing, and display this in the "Add PostGIS Table(s)" dialog, the Browser Panel, and the Database Manager.
  2. Make the Database Manager behave like the "Add PostGIS Table" and Browser Panel, so show the schemas and tables you have access to even if PostGIS is missing (plus the warning).

The errors (stacktrace):

@an error has occurred while executing Python code:

TypeError: 'NoneType' object has no attribute 'getitem'
Traceback (most recent call last):
File "C:/OSGEO41/apps/qgis/./python/plugins\db_manager\db_model.py", line 438, in rowCount
self._refreshIndex(parent, True)
File "C:/OSGEO4
1/apps/qgis/./python/plugins\db_manager\db_model.py", line 489, in _refreshIndex
if item.populate():
File "C:/OSGEO41/apps/qgis/./python/plugins\db_manager\db_model.py", line 164, in populate
if not connection.connect():
File "C:/OSGEO4
1/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\plugin.py", line 96, in connect
return self.connectToUri(uri)
File "C:/OSGEO41/apps/qgis/./python/plugins\db_manager\db_plugins\plugin.py", line 106, in connectToUri
self.db = self.databasesFactory(self, uri)
File "C:/OSGEO4
1/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\plugin.py", line 66, in databasesFactory
return PGDatabase(connection, uri)
File "C:/OSGEO41/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\plugin.py", line 104, in init
Database.init(self, connection, uri)
File "C:/OSGEO4
1/apps/qgis/./python/plugins\db_manager\db_plugins\plugin.py", line 215, in init
self.connector = self.connectorsFactory(uri)
File "C:/OSGEO41/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\plugin.py", line 107, in connectorsFactory
return PostGisDBConnector(uri)
File "C:/OSGEO4
1/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\connector.py", line 134, in init
self._checkGeometryColumnsTable()
File "C:/OSGEO4~1/apps/qgis/./python/plugins\db_manager\db_plugins\postgis\connector.py", line 167, in _checkGeometryColumnsTable
self.has_geometry_columns_access = priv[0]
TypeError: 'NoneType' object has no attribute 'getitem'@

@qgib
Copy link
Contributor Author

qgib commented Mar 9, 2019

Author Name: Giovanni Manghi (@gioman)


End of life notice: QGIS 2.18 LTR

Source:
http://blog.qgis.org/2019/03/09/end-of-life-notice-qgis-2-18-ltr/

QGIS 3.4 has recently become our new Long Term Release (LTR) version. This is a major step in our history – a long term release version based on the massive updates, library upgrades and improvements that we carried out in the course of the 2.x to 3x upgrade cycle.

We strongly encourage all users who are currently using QGIS 2.18 LTR as their preferred QGIS release to migrate to QGIS 3.4. This new LTR version will receive regular bugfixes for at least one year. It also includes hundreds of new functions, usability improvements, bugfixes, and other goodies. See the relevant changelogs for a good sampling of all the new features that have gone into version 3.4

Most plugins have been either migrated or incorporated into the core QGIS code base.

We strongly discourage the continued use of QGIS 2.18 LTR as it is now officially unsupported, which means we’ll not provide any bug fix releases for it.

You should also note that we intend to close all bug tickets referring to the now obsolete LTR version. Original reporters will receive a notification of the ticket closure and are encouraged to check whether the issue persists in the new LTR, in which case they should reopen the ticket.

If you would like to better understand the QGIS release roadmap, check out our roadmap page! It outlines the schedule for upcoming releases and will help you plan your deployment of QGIS into an operational environment.

The development of QGIS 3.4 LTR has been made possible by the work of hundreds of volunteers, by the investments of companies, professionals, and administrations, and by continuous donations and financial support from many of you. We sincerely thank you all and encourage you to collaborate and support the project even more, for the long term improvement and sustainability of the QGIS project.


  • resolution was changed from to end of life
  • status_id was changed from Open to Closed

@qgib qgib closed this as completed Mar 9, 2019
@qgib qgib added Bug Either a bug report, or a bug fix. Let's hope for the latter! DB Manager Relating to the DB Manager core plugin labels May 25, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Either a bug report, or a bug fix. Let's hope for the latter! DB Manager Relating to the DB Manager core plugin
Projects
None yet
Development

No branches or pull requests

1 participant