Bug #108359 MySQL 5.7.38 enforces to use VC++ 2019
Submitted: 1 Sep 2022 10:19 Modified: 21 Oct 2022 6:11
Reporter: Valliappan S Email Updates:
Status: No Feedback Impact on me:
None 
Category:MySQL Server: Installing Severity:S2 (Serious)
Version:5.7.38 OS:Windows
Assigned to: MySQL Verification Team CPU Architecture:Any
Tags: Prerequisite of VC++ 2019

[1 Sep 2022 10:19] Valliappan S
Description:
Hi Team,

MySQL 5.7.38 - (Release date:  2022-04-26, General Availability). We are started consuming it around 11 May 2022.

During that initial period, MySQL document doesn’t have any data points regarding the VC++ 2019 requirement.

Without any Prerequisite check, installation & upgrade to MySQL server 5.7.38 went through fine regardless of the system internet connection. 

As per the MySQL "Installing MySQL on Microsoft Windows" on 06 Jun 2022 (post 5.7.38 release and prior to 5.7.39) release. The document doesn't have any data points regarding the VC++ is a mandatory requirement for MySQL v5.7.38 release.

Website Snapshot (06 Jun 2022): (https://web.archive.org/web/20220606211647/https://dev.mysql.com/doc/refman/5.7/en/windows...) for reference.

Post MySQL 5.7.39 (2022-07-26, General Availability) release, During the fresh installation or upgrade to MySQL 5.7.38 is failing with error "it requires VC++ 2019 is mandatory" where the system has internet connectivity. 

It works fine on the SecLab systems where it doesn't have an internet connection. 

If see now, MySQL "Installing MySQL on Microsoft Windows" document is also refreshed and it says MySQL 5.7.38 needs VC++ as the Prerequisite.
"https://dev.mysql.com/doc/refman/5.7/en/windows-installation.html"

This unpredictable change, it severely impacts the customer and all of our development systems.

How to repeat:
Try to install the MySQL server in the system,

Success case: Install it in the system where it doesn't have internet connection, MySQL server installation will go through. 

Failure case: Install it in the system where it has internet connection, MySQL server installation will fail with error. 

GUI prompts proper error message.

But in the CLI mode of installation provided different error message and it's extremely difficult to correlate the problem.

Error message (CLI mode): 
Fresh Install: 
"Package MySQL Server 5.7.38 cannot be installed due to failing requirements."

Upgrade: 
"MySQL Server 5.7.36 :  No upgrade targets matched 5.7.38."

Suggested fix:
Relax the VC++ check for the MySQL v5.7.38 for both fresh install and upgrade use case. 

Also, sync error message and installation behaviour common between the MySQL GUI and MySQL CLI.
[8 Sep 2022 11:44] MySQL Verification Team
Hello Valliappan,

Thank you for the bug report.
Discussed your issue with MySQL Installer developer and we need some additional information from you.

what is the version of the Installer manifest that you have on both the machine with no internet connection and the one with internet connection? The manifest version number can be obtained by opening the VERSION file usually located at: “C:\ProgramData\MySQL\MySQL Installer for Windows\Manifest”. We suspect you have different versions of the manifest and that is causing the reported behavior of requesting/not requesting the VC++ prerequisite as this was updated sometime between the release of 5.7.38 and 5.7.39.

Regards,
Ashwini Patil
[9 Sep 2022 17:26] Valliappan S
MySQL 5.7.38_Manifest_products_with_internet

Attachment: MySQL 5.7.38_Manifest_products_with_internet.xml (text/xml), 826.16 KiB.

[9 Sep 2022 17:27] Valliappan S
MySQL 5.7.38_Manifest_products_without_internet

Attachment: MySQL 5.7.38_Manifest_products_without_internet.xml (text/xml), 14.42 KiB.

[9 Sep 2022 17:28] Valliappan S
Manifest files (with and without internet)

Attachment: mysql-bug-data-108359.zip (application/x-zip-compressed, text), 114.14 KiB.

[9 Sep 2022 17:48] Valliappan S
Hi Ashwini,

Thanks for the prompt update. 

Attached the manifest - products.xml file for both systems with & without internet connection. Please find it.

We are using the same executable (MySQL 5.7.38) in both scenario's. But manifest having altogether different content. 

1. The system has internet connectivity - MySQL manifest size is around 850KB
2. The system has no internet connectivity - MySQL manifest size is around 15KB

The intended (Expected) behavior of MySQL 5.7.38 should work seamlessly regardless of internet connectivity without the VC++ 2019 dependency. 

It states, system which has internet connectivity get the recent manifest (products.xml) file. As the result, it enforces VC++ 2019 requirement even for MySQL 5.7.38 version.

Note: We are fine with the MySQL 5.7.39 VC++ 2019 requirement and concern is mainly for the unexpected pre-check validation of MySQL 5.7.38 and it created a severe impact in the production infra, where we are upgrading from MySQL 5.7.36 to 5.7.38.

Thanks
Valli
[19 Sep 2022 16:27] Jose Ramirez
Hello,
based on the provided info, the size of the products.xml indicates that the system with no internet connection doesn't have the latest MySQL installer manifest. Because of an error in the prerequisites, they were updated for 5.7.38 sometime after the release of MySQL Server, meaning that the package-rules.xml (manifest file which handles the prereqs) in the system without internet connection is not up to date.

MySQL Installer automatically downloads the latest manifest upon first execution, however if there is no internet connection the only option is to update the manifest manually by downloading it from: https://cdn.mysql.com/windows/installer/manifest.zip.

After the download proceed to replace the contents of the manifest folder at C:\ProgramData\MySQL\MySQL Installer for Windows\Manifest with the new files. Doing so, and assuming the MySQL Installer installation also has the latest manifest, you should see the same prerequisites behavior.
[22 Oct 2022 1:00] Bugs System
No feedback was provided for this bug for over a month, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".