sql >> Database >  >> RDS >> PostgreSQL

GeoServer schrijft niet naar mijn PostgreSQL-updatebare weergave

Ten eerste kon ik het niet meer eens zijn met Frank. Gebruik 9.1 en een tabeltrigger. Het is echter mogelijk dat noch dat, noch een weergave uw probleem zal oplossen.

Probeer een handmatige UPDATE op uw uitzicht vanaf psql. Als dat werkt, en als je verbinding maakt met dezelfde gebruikers-ID met opengeospatial, dan zou ik zeggen dat het probleem zou kunnen zijn dat opengeospatial te slim is voor zijn eigen bestwil en "wetende" dat weergaven niet kunnen worden bijgewerkt. Ofwel dat, of het probeert een INSERT en je hebt geen overeenkomende INSERT . toegevoegd regel op uw mening.

Het bericht "filedata_view is alleen-lezen" is geen bericht dat PostgreSQL kan produceren. Ik vraag me af of opengeospatial JDBC-metadata gebruikt (ervan uitgaande dat het Java is) of INFORMATION_SCHEMA of iets dergelijks om het schema te doorzoeken, bepaalt dat filedata_view is een weergave en concludeert dat deze deze daarom niet kan bijwerken.

Als het een bericht van PostgreSQL zou zijn, zou het in plaats daarvan zeggen:

# UPDATE customer_v SET customer_number = 1234; 
ERROR:  cannot update view "the_view" 
HINT:  You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE trigger.

Het kan informatief zijn om log_statement = 'all' in te schakelen in postgresql.conf en herlaad postgresql. Test opnieuw, kijk dan in de logs om te zien wat opengeospatial precies doet.

Als blijkt dat het een weergave detecteert, kunt u het probleem mogelijk omzeilen met een ON SELECT regel toegevoegd aan een lege tabel. De tabel werkt net als een weergave, maar GeoServer kan niet zien dat het een weergave is en kan ermee instemmen om ernaar te schrijven.



  1. MYSQL-query om datumverschil te krijgen

  2. MySQL-volgorde op alternatieve waarden

  3. Gecomprimeerde bestanden importeren in Mysql met CMD

  4. Openbare synoniemen versus schema.object-patroon