The world`s most popular open-source relational database management system

MySQL

MySQL 5.7.31

  -  509 MB  -  Open Source
  • Latest Version

    MySQL 8.0.40.0

  • Operating System

    Windows XP64 / Vista64 / Windows 7 64 / Windows 8 64 / Windows 10 64

  • User Rating

    Click to vote
  • Author / Product

    Oracle / External Link

  • Filename

    mysql-installer-community-5.7.31.0.msi

  • MD5 Checksum

    d41d8cd98f00b204e9800998ecf8427e

Sometimes latest versions of the software can cause issues when installed on older devices or devices running an older version of the operating system.

Software makers usually fix these issues but it can take them some time. What you can do in the meantime is to download and install an older version of MySQL 5.7.31.


For those interested in downloading the most recent release of MySQL or reading our review, simply click here.


All old versions distributed on our website are completely virus-free and available for download at no cost.


We would love to hear from you

If you have any questions or ideas that you want to share with us - head over to our Contact page and let us know. We value your feedback!

  • MySQL 5.7.31 Screenshots

    The images below have been resized. Click on them to view the screenshots in full size.

    MySQL 5.7.31 Screenshot 1
  • MySQL 5.7.31 Screenshot 2
  • MySQL 5.7.31 Screenshot 3
  • MySQL 5.7.31 Screenshot 4
  • MySQL 5.7.31 Screenshot 5

What's new in this version:

Bugs-Fixed:
- InnoDB: The INNODB_METRICS table AVG_COUNT_RESET value for a counter defined as a module owner reported NULL. The METRIC_AVG_VALUE_RESET field was incorrectly marked as NULL. Thanks to Fungo Wang for the contribution
- InnoDB: Purge thread activity was excessive when the history list length approached zero, wasting CPU resource and causing mutex contention
- InnoDB: The server failed intermittently with an “ibuf cursor restoration fails” error
- InnoDB: A fatal “page still fixed or dirty” error occurred during shutdown
- Partitioning: A query against a partitioned table, which used an ORDER BY, returned unordered results under the following conditions:
- The table had a composite index with a prefix on one of the columns
- The query's WHERE clause contained an equality condition on the prefixed column
- The column with the prefix was the leftmost column in the index
- The column used in the ORDER BY was the rightmost column in the index
- The index was used for handling the ORDER BY
- Our thanks to Quanan Han for the suggestion
- Replication: When a replication source server shuts down and restarts, its MEMORY tables become empty. To replicate this effect to replicas, the first time that the source uses a given MEMORY table after startup, it notifies replicas that the table must be emptied by writing a DELETE statement for that table to the binary log. Previously, the generated DELETE statement was written to the binary log statement cache for the current session, which could result in it being logged together with other statements under the same GTID, or logged without BEGIN and COMMIT statements. Also, in some situations, the generated DELETE statement could consume the GTID intended for the transaction that triggered it. The generated DELETE statement is now logged with accompanying BEGIN and COMMIT statements, and the resulting transaction is flushed to the binary log immediately after it is written to the statement cache, so that it always receives its own GTID and is kept separate from other transactions
- Replication: Internal queries from Group Replication to the Performance Schema for statistics on local group members failed if they occurred simultaneously with changes to the group's membership. Locking for the internal queries has been improved to fix the issue
- Replication: A fix made in MySQL 8.0.14 and MySQL 5.7.25 for a deadlock scenario involving the system variables binlog_transaction_dependency_tracking and binlog_transaction_dependency_history_size had the side effect of leaving the writeset history used for transaction dependency tracking unprotected from concurrent update. The writeset history and tracking mode are now locked correctly whenever they are accessed
- Configuring with -DWITH_EDITLINE=system resulted in compilation failures for older library versions
- The upgrade of the bundled libedit library in the previous MySQL distribution caused a problem for builds using that library such that CTRL+C (SIGINT) in the mysql client required a following Enter to take effect in some circumstances
- Assigning CONCAT('') or CONCAT_WS('') to a variable set the variable to NULL, not the empty string
- The gen_range() user-defined function could mishandle its arguments, causing a server exit
- During UPDATE processing, conversion of an internal in-memory table to InnoDB could result in a key-length error
- It is possible to define a column named * (single asterisk character), but SELECT `*` was treated identically to SELECT *, making it impossible to select only this column in a query; in other words, the asterisk character was expanded to a list of all table columns even when it was surrounded by backticks.
- An internal packet-length function returned values of the wrong integer type
- Calculations by mysqldump for the length of INSERT statements did not take into account the _binary character set introducer used for VARBINARY strings
- The internal method Field_tiny::pack() did not always perform bounds checking as expected
- mysql_store_result() could fail to detect invalid data packets
- In a multiple-table UPDATE that updated the key of the first table, if a temporary table strategy was used, duplicate entries could be written to the temporary table, followed by occurrence of a Can't find record error.
- The optimizer could attempt to access a pseudo table as a table, resulting in unexpected server behavior
- The server sometimes mistakenly removed a subquery with a GROUP BY when optimizing a query, even in some cases when this subquery was used by an outer select. This could occur when the subquery also used an aggregate function.
- Coercibility of the NAME_CONST() function was assessed incorrectly
- Incorrect results could occur when the optimizer chose an index on a generated column to fetch values