Upgrade from 3.4.1 to 4.9

Silverstripe Version: 4.9

Question:

I have recently upgraded a legacy site from 3.4.1 to 4.9 with the upgrade-code and am unable to run dev/build to upgrade the database.

I used the upgrade-code all command to do the upgrade.

# [Emergency] Uncaught SilverStripe\ORM\Connect\DatabaseException: Couldn't run query: SELECT DISTINCT "SiteTree_Versions"."ClassName", "SiteTree_Versions"."LastEdited", "SiteTree_Versions"."Created", "SiteTree_Versions"."ProvideComments", "SiteTree_Versions"."ModerationRequired", "SiteTree_Versions"."CommentsRequireLogin", "SiteTree_Versions"."CanViewType", "SiteTree_Versions"."CanEditType", "SiteTree_Versions"."Version", "SiteTree_Versions"."URLSegment", "SiteTree_Versions"."Title", "SiteTree_Versions"."MenuTitle", "SiteTree_Versions"."Content", "SiteTree_Versions"."MetaDescription", "SiteTree_Versions"."ExtraMeta", "SiteTree_Versions"."ShowInMenus", "SiteTree_Versions"."ShowInSearch", "SiteTree_Versions"."Sort", "SiteTree_Versions"."HasBrokenFile", "SiteTree_Versions"."HasBrokenLink", "SiteTree_Versions"."ReportClass", "SiteTree_Versions"."ParentID", "SiteTree_Versions"."RecordID" AS "ID", CASE WHEN "SiteTree_Versions"."ClassName" IS NOT NULL THEN "SiteTree_Versions"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName", "SiteTree_Versions"."RecordID", "SiteTree_Versions"."WasPublished", "SiteTree_Versions"."WasDeleted", "SiteTree_Versions"."WasDraft", "SiteTree_Versions"."AuthorID", "SiteTree_Versions"."PublisherID" FROM "SiteTree_Versions" WHERE ("SiteTree_Versions"."URLSegment" = ?) AND ("SiteTree_Versions"."ParentID" = ?) AND ("WasPublished" = ?) ORDER BY "SiteTree_Versions"."LastEdited" DESC, "SiteTree_Versions"."Version" ASC LIMIT 1 Unknown column 'SiteTree_Versions.WasDeleted' in 'field list'

### GET /public/index.php

I left this on the back burner and finally it has come to bite me - the hosting provider I use no longer supports php 5 and has switched it off…

I will be trying the following today:

Goood luck, Paul!
Think I have learnt:

  1. Changing variables to private means that you cannot send them to other classes. Suddenly, those classes won’t have proper input. This is why.

  2. Changing class names needs to be updated in all your project files, not just your PHP files. Remember the YAML files.This took far too long to figure out why my routing stopped working.

I am currently facing not just a new error but a completely new error type. I’m going to poke at it a bit and see if I can figure out at least where the error is coming from. Is it the template? Is it the routing? Is it the code? At this moment, I can’t say. ERROR [UNKNOWN TYPE, ERRNO 404]