I just upgraded WP to 4.9.6. My WP installation is on Windows 10 in a XAMPP installation, running as a virtual server on my laptop.
I migrated this site from a remote LAMP server, with mostly identical results.
Here's a screen shot of the media library "before":
Here's a screen shot of the media library "after" upgrade:
I also upgraded to 4.9.6 on the remote server, which continues to work normally.
After investigating online, I learned that the gui field of the wp-posts table contains urls. I noticed that in my table, the urls pointed to a previous incarnation of this WP site. I did a bulk sql update so that the string values in the GUI field of the wp_posts table reflect the correct, current virtual server url on my localhost.
The basic sql statement to update a whole bunch of sub-strings is like this:
UPDATE your_table SET your_field = REPLACE(your_field, 'articles/updates/', 'articles/news/') WHERE your_field LIKE '%articles/updates/%'
But that operation didn't solve the problem. However, on the media library page I noticed two little icons, one looks like a "list" icon, the other a "grid" icon. When I click on the "list" icon, all my media files show:
But when I click back to the "grid" display icon, same problem, "No media files found."
My ID columns in wp_posts and wp_postmeta were not set to auto increment (AI). Once I set these columns to AI from phpMyAdmin, the thumbnail grid immediately worked.