Database Reference
In-Depth Information
Discussion
Over the course of MySQL development, new versions add features. If you're writing
an application that requires certain features, check the server version to determine
whether they are present; if not, you must perform some sort of workaround (assuming
there is one).
To get the server version, invoke the VERSION() function. The result is a string that looks
something like 5.5.25a or 5.7.4-m14 . In other words, it returns a string consisting of
major, minor, and “teeny” version numbers, possibly some nondigits at the end of the
“teeny” version, and possibly some suffix. The version string can be used as is for pre‐
sentation purposes, but for comparisons, it's simpler to work with a number—in par‐
ticular, a five-digit number in Mmmtt format, in which M , mm , tt are the major, minor, and
teeny version numbers. Perform the conversion by splitting the string at the periods,
stripping from the third piece the suffix that begins with the first nonnumeric character,
and joining the pieces. For example, 5.5.25a becomes 50525 , and 5.7.4-m14 becomes
50704 .
Here's a Perl DBI function that takes a database-handle argument and returns a two-
element list that contains both the string and numeric forms of the server version. The
code assumes that the minor and teeny version parts are less than 100 and thus no more
than two digits each. That should be a valid assumption because the source code for
MySQL itself uses the same format:
sub get_server_version
{
my $dbh = shift ;
my ( $ver_str , $ver_num );
my ( $major , $minor , $teeny );
# fetch result into scalar string
$ver_str = $dbh -> selectrow_array ( "SELECT VERSION()" );
return undef unless defined ( $ver_str );
( $major , $minor , $teeny ) = split ( /\./ , $ver_str );
$teeny =~ s/\D.*$// ; # strip nonnumeric suffix if present
$ver_num = $major * 10000 + $minor * 100 + $teeny ;
return ( $ver_str , $ver_num );
}
To get both forms of the version information at once, call the function like this:
my ( $ver_str , $ver_num ) = get_server_version ( $dbh );
To get just one of the values, call it as follows:
my $ver_str = ( get_server_version ( $dbh ))[ 0 ]; # string form
my $ver_num = ( get_server_version ( $dbh ))[ 1 ]; # numeric form
The following examples demonstrate how to use the numeric version value to check
whether the server supports certain features:
Search WWH ::




Custom Search