Updated: Comment #118
There are a number of significant issues with installing and running Drupal 8 on PostgreSQL.
Identify the major issues and implement workarounds or fixes. This should now be done in each individual related issue rather than tacking onto a huge patch.
These issues are listed in the Related Issues block to the right.
Comments #1 - #117 are related to this issue pre-meta status. The latest "full patch" is from Comment #109. This should be used as a started point for the sub-tasks to split off code into new patches.
- In transaction context, the first failure makes the transaction abort, and subsequent operations, even if they would normally succeed, also fail with the error "current transaction is aborted, commands ignored until end of transaction block". This differs from the behavior of MySQL. The workaround is to wrap all queries that occur inside a transaction with SAVEPOINT.
- Cache tables are missing at the end of the installation. Ensure cache tables exist when deleteAll/DeleteMultiple is called.
- Some things such as node/add/page fail because queries such as "select * from users where (uid IN ('autocomplete'))" which succeeds in MySQL, causes an exception in PostgreSQL because 'autocomplete' is not an integer. menu_get_item() needs to be fixed to get the correct route for user/autocomplete.
- Toolbar menu links do not appear because of the way a orderBy() override for pgsql adds fields in front of fields expected by Entity\Query. The workaround is to add a tag to the query to disable the special features of the override in specific cases.
- Prevent pgsql driver from trying to implode primary key fields that are defined by an array (column, key_length) as that syntax is not supported.
(Update Feb. 2014. There is work in progress to completely remove menu_get_item() from core, so this issue might get fixed by)
- Create patches for known issues in their respective issue.
- Create issues and relate those issues to this task as new bugs are discovered.
Original report by hosef
When one installs Drupal 8 on a PostgreSQL database, the installation will hang while installing the Image module. You can get around the install hang by using the minimal profile, however, when you go view a page on the site(after trying either profile) you will get:
Page not found
The requested page "/" could not be found.
There don't appear to be any relevent entries in the Apache log, however the following shows up in the PostgeSQL log for each page load:
2013-05-22 22:05:01 PDT STATEMENT: DELETE FROM cache_menu
2013-05-22 22:05:01 PDT ERROR: current transaction is aborted, commands ignored until end of transaction block
2013-05-22 22:05:01 PDT STATEMENT: SELECT 1 FROM information_schema.tables WHERE (table_catalog = 'drupalcore') AND (table_schema = 'public') AND (table_name = 'cache_menu')
|PASSED: [[SimpleTest]]: [MySQL] 60,043 pass(es). |
[ View ]
|#83||Screen Shot 2013-10-14 at 4.18.41.png||558.43 KB||dlu|
|PASSED: [[SimpleTest]]: [MySQL] 59,031 pass(es). |
[ View ]