Upgrade 9.1.3 → 9.2.0, an adventure

Seeing yesterday’s announcement, I decided to play on my CCMS 9 test site.

This site is created using composer, so I did my usual upgrade routine:

$ sudo -u www-data ./public/concrete/bin/concrete c5:config -g set concrete.maintenance_mode true
$ composer upgrade
$ sudo -u www-data ./public/concrete/bin/concrete c5:update
$ sudo -u www-data ./public/concrete/bin/concrete c5:config -g set concrete.maintenance_mode false

And while that’s working well, and my site appears normal when not logged in, actually logging in came… with a bit of a surprise:

I wish I knew how to transform that stack trace to text, so I could display it here.

Lame attempt at copy and paste of the stack trace:

59 Doctrine\DBAL\Exception\InvalidFieldNameException
…/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.pgp:79
58 Doctrine\DBAL\Driver\AbstractMySQLDriver convertException
…/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.pgp:182
57 Doctrine\DBAL\DBALException wrapException
…/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.pgp:159
56 Doctrine\DBAL\DBALException driverExceptionDuringQuery
…/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.pgp:2226
55 Doctrine\DBAL\Connection handleExceptionDuringQuery
…/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.pgp:1313
54 Doctrine\DBAL\Driver\PDO\Exception
…/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/Exception.pgp:18
53 Doctrine\DBAL\Driver\PDO\Exception new
…/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.pgp:119
52 PDOException
…/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.pgp:117
51 PDOStatement execute
…/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.pgp:117
50 Doctrine\DBAL\Driver\PDOStatement execute
…/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.pgp:1304
49 Doctrine\DBAL\Connection executeQuery
…/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.pgp:750
48 Doctrine\ORM\Persisters\Entity\BasicEntityPersister load
…/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.pgp:241
47 Doctrine\ORM\EntityRepository findOneBy
…/public/concrete/src/User/UserInfoRepository.pgp:133
46 Concrete\Core\User\UserInfoRepository get
…/public/concrete/src/User/UserInfoRepository.pgp:33
45 Concrete\Core\User\UserInfoRepository getByID
…/public/concrete/src/Support/Facade/Facade.pgp:118
44 Concrete\Core\Support\Facade\Facade __callStatic
…/public/concrete/src/Permission/Access/Entity/UserEntity.pgp:85
43 Concrete\Core\Permission\Access\Entity\UserEntity load
…/public/concrete/src/Permission/Access/Entity/Entity.pgp:128
42 Concrete\Core\Permission\Access\Entity\Entity getByID
…/public/concrete/src/Permission/Access/Entity/UserEntity.pgp:24
41 Concrete\Core\Permission\Access\Entity\UserEntity getAccessEntitiesForUser
…/public/concrete/src/Permission/Access/Entity/Type.pgp:75
40 call_user_func_array
…/public/concrete/src/Permission/Access/Entity/Type.pgp:75
39 Concrete\Core\Permission\Access\Entity\Type __call
…/public/concrete/src/Permission/Access/Entity/Entity.pgp:141
38 Concrete\Core\Permission\Access\Entity\Entity getForUser
…/public/concrete/src/User/User.pgp:675
37 Concrete\Core\User\User getUserAccessEntityObjects
…/public/concrete/src/Page/Page.pgp:3748
36 Concrete\Core\Page\Page add
…/public/concrete/src/Page/Stack/Stack.pgp:181
35 Concrete\Core\Page\Stack\Stack addStackToCategory
…/public/concrete/src/Page/Stack/Stack.pgp:229
34 Concrete\Core\Page\Stack\Stack addGlobalArea
…/public/concrete/src/Page/Stack/Stack.pgp:73
33 Concrete\Core\Page\Stack\Stack getOrCreateGlobalArea
…/public/concrete/src/Area/GlobalArea.pgp:45
32 Concrete\Core\Area\GlobalArea create
…/public/concrete/src/Area/Area.pgp:773
31 Concrete\Core\Area\Area load
…/public/concrete/src/Area/Area.pgp:828
30 Concrete\Core\Area\Area display
…/public/concrete/src/Area/GlobalArea.pgp:128
29 Concrete\Core\Area\GlobalArea display
…/public/concrete/themes/elemental/elements/header.pgp:16
28 include
…/public/concrete/src/View/View.pgp:125
27 Concrete\Core\View\View inc
…/public/concrete/themes/elemental/default.pgp:4
26 include
…/public/concrete/src/View/View.pgp:125
25 Concrete\Core\View\View inc
…/public/concrete/themes/elemental/full.pgp:4
24 include
…/public/concrete/src/View/View.pgp:339
23 Concrete\Core\View\View renderTemplate
…/public/concrete/src/View/View.pgp:301
22 Concrete\Core\View\View renderViewContents
…/public/concrete/src/View/AbstractView.pgp:164
21 Concrete\Core\View\AbstractView render
…/public/concrete/src/Http/ResponseFactory.pgp:147
20 Concrete\Core\Http\ResponseFactory view
…/public/concrete/src/Http/ResponseFactory.pgp:220
19 Concrete\Core\Http\ResponseFactory controller
…/public/concrete/src/Http/ResponseFactory.pgp:372
18 Concrete\Core\Http\ResponseFactory collection
…/public/concrete/src/Http/DefaultDispatcher.pgp:132
17 Concrete\Core\Http\DefaultDispatcher handleDispatch
…/public/concrete/src/Http/DefaultDispatcher.pgp:60
16 Concrete\Core\Http\DefaultDispatcher dispatch
…/public/concrete/src/Http/Middleware/DispatcherDelegate.pgp:39
15 Concrete\Core\Http\Middleware\DispatcherDelegate next
…/public/concrete/src/Http/Middleware/FrameOptionsMiddleware.pgp:39
14 Concrete\Core\Http\Middleware\FrameOptionsMiddleware process
…/public/concrete/src/Http/Middleware/MiddlewareDelegate.pgp:50
13 Concrete\Core\Http\Middleware\MiddlewareDelegate next
…/public/concrete/src/Http/Middleware/StrictTransportSecurityMiddleware.pgp:36
12 Concrete\Core\Http\Middleware\StrictTransportSecurityMiddleware process
…/public/concrete/src/Http/Middleware/MiddlewareDelegate.pgp:50
11 Concrete\Core\Http\Middleware\MiddlewareDelegate next
…/public/concrete/src/Http/Middleware/ContentSecurityPolicyMiddleware.pgp:36
10 Concrete\Core\Http\Middleware\ContentSecurityPolicyMiddleware process
…/public/concrete/src/Http/Middleware/MiddlewareDelegate.pgp:50
9 Concrete\Core\Http\Middleware\MiddlewareDelegate next
…/public/concrete/src/Http/Middleware/CookieMiddleware.pgp:35
8 Concrete\Core\Http\Middleware\CookieMiddleware process
…/public/concrete/src/Http/Middleware/MiddlewareDelegate.pgp:50
7 Concrete\Core\Http\Middleware\MiddlewareDelegate next
…/public/concrete/src/Http/Middleware/ApplicationMiddleware.pgp:29
6 Concrete\Core\Http\Middleware\ApplicationMiddleware process
…/public/concrete/src/Http/Middleware/MiddlewareDelegate.pgp:50
5 Concrete\Core\Http\Middleware\MiddlewareDelegate next
…/public/concrete/src/Http/Middleware/MiddlewareStack.pgp:86
4 Concrete\Core\Http\Middleware\MiddlewareStack process
…/public/concrete/src/Http/DefaultServer.pgp:85
3 Concrete\Core\Http\DefaultServer handleRequest
…/public/concrete/src/Foundation/Runtime/Run/DefaultRunner.pgp:125
2 Concrete\Core\Foundation\Runtime\Run\DefaultRunner run
…/public/concrete/src/Foundation/Runtime/DefaultRuntime.pgp:102
1 Concrete\Core\Foundation\Runtime\DefaultRuntime run
…/public/concrete/dispatcher.pgp:45
0 require
…/public/index.pgp:3

Before you ask, I did try to uninstall all extra packages I had (blog_module) and to run task:clear-cache, but alas…

The solution was found in another post on the same topic:

$ ./public/concrete/bin/concrete5 c5:entities:refresh

I’m having the same issue. However when I try to refresh entities from the command line I get:

/home/concrete/concrete-cms-9.2.0/concrete/bin/concrete5 c5:entities:refresh


  There are no commands defined in the "c5:entities" namespace.

  Did you mean one of these?
      c5
      c5:package

Ok weird. It looks like only have some commands available when using a shared copy of the core files. I am able to run upgrades but little else. When I deleted the symlink and copied over the files I was able to refresh the entities and it looks like I have a bunch more functions available as well.

It could be that the core files expect some other files to be reachable using a specific path from the location of the file they were called as, i.e. that the location of the symlink, not the real file, is the starting point to try to figure out where the other files are, and fail if there isn’t equal symlinks to the stuff it’s trying to reach.

Did that make some sort of sense?

Ya, I assumed it was something like that. Would be nice if it at least spit out an informative warning message though.