220 lines
7.3 KiB
Plaintext
Executable File
220 lines
7.3 KiB
Plaintext
Executable File
#
|
|
# Test with a saved MyISAM table from 4.1
|
|
#
|
|
# Everything _looks_ fine
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`y2` year(2) DEFAULT NULL,
|
|
`i` int(11) DEFAULT NULL,
|
|
`i_chk` int(11) DEFAULT NULL,
|
|
`y4` year(4) DEFAULT NULL,
|
|
`y4_chk` year(4) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
# Run CHECK TABLE, it should indicate table need a REPAIR TABLE
|
|
CHECK TABLE t1 FOR UPGRADE;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check error Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
|
|
# Run REPAIR TABLE to alter the table and repair the YEAR(2) fields
|
|
REPAIR TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 repair Warning YEAR(2) column type is deprecated. Creating YEAR(4) column instead.
|
|
test.t1 repair status OK
|
|
# Now check it's back to normal
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`y2` year(4) DEFAULT NULL,
|
|
`i` int(11) DEFAULT NULL,
|
|
`i_chk` int(11) DEFAULT NULL,
|
|
`y4` year(4) DEFAULT NULL,
|
|
`y4_chk` year(4) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
SELECT * FROM t1;
|
|
y2 i i_chk y4 y4_chk
|
|
1901 1901 1 1901 1901
|
|
2001 1 1 2001 2001
|
|
1970 1970 70 1970 1970
|
|
1970 70 70 1970 1970
|
|
2000 2000 0 2000 2000
|
|
0000 0 0 0000 0000
|
|
2069 2069 69 2069 2069
|
|
2069 69 69 2069 2069
|
|
2155 2155 55 2155 2155
|
|
2055 55 55 2055 2055
|
|
DROP TABLE t1;
|
|
# ALTER TABLE ... FORCE should convert YEAR(2) to YEAR(4)
|
|
ALTER TABLE t1 FORCE;
|
|
Warnings:
|
|
Warning 1818 YEAR(2) column type is deprecated. Creating YEAR(4) column instead.
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`y2` year(4) DEFAULT NULL,
|
|
`i` int(11) DEFAULT NULL,
|
|
`i_chk` int(11) DEFAULT NULL,
|
|
`y4` year(4) DEFAULT NULL,
|
|
`y4_chk` year(4) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
#
|
|
# Test with a saved MyISAM table from 5.5
|
|
#
|
|
# Everything _looks_ fine
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`y2` year(2) DEFAULT NULL,
|
|
`i` int(11) DEFAULT NULL,
|
|
`i_chk` int(11) DEFAULT NULL,
|
|
`y4` year(4) DEFAULT NULL,
|
|
`y4_chk` year(4) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
# Run CHECK TABLE, it should indicate table need a REPAIR TABLE
|
|
CHECK TABLE t1 FOR UPGRADE;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check error Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
|
|
# Run REPAIR TABLE to alter the table and repair the YEAR(2) fields
|
|
REPAIR TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 repair Warning YEAR(2) column type is deprecated. Creating YEAR(4) column instead.
|
|
test.t1 repair status OK
|
|
# Now check it's back to normal
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`y2` year(4) DEFAULT NULL,
|
|
`i` int(11) DEFAULT NULL,
|
|
`i_chk` int(11) DEFAULT NULL,
|
|
`y4` year(4) DEFAULT NULL,
|
|
`y4_chk` year(4) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
SELECT * FROM t1;
|
|
y2 i i_chk y4 y4_chk
|
|
1901 1901 1 1901 1901
|
|
2001 1 1 2001 2001
|
|
1970 1970 70 1970 1970
|
|
1970 70 70 1970 1970
|
|
2000 2000 0 2000 2000
|
|
0000 0 0 0000 0000
|
|
2069 2069 69 2069 2069
|
|
2069 69 69 2069 2069
|
|
2155 2155 55 2155 2155
|
|
2055 55 55 2055 2055
|
|
DROP TABLE t1;
|
|
# ALTER TABLE ... FORCE should convert YEAR(2) to YEAR(4)
|
|
ALTER TABLE t1 FORCE;
|
|
Warnings:
|
|
Warning 1818 YEAR(2) column type is deprecated. Creating YEAR(4) column instead.
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`y2` year(4) DEFAULT NULL,
|
|
`i` int(11) DEFAULT NULL,
|
|
`i_chk` int(11) DEFAULT NULL,
|
|
`y4` year(4) DEFAULT NULL,
|
|
`y4_chk` year(4) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
#
|
|
# Test with InnoDB table (with fake .frm file)
|
|
#
|
|
# Create InnoDB table with YEAR(4) columns
|
|
ALTER TABLE t1 ENGINE=InnoDB;
|
|
Warnings:
|
|
Warning 1818 YEAR(2) column type is deprecated. Creating YEAR(4) column instead.
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`y2` year(4) DEFAULT NULL,
|
|
`i` int(11) DEFAULT NULL,
|
|
`i_chk` int(11) DEFAULT NULL,
|
|
`y4` year(4) DEFAULT NULL,
|
|
`y4_chk` year(4) DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
FLUSH TABLE t1;
|
|
# Replace YEAR(4) column metadata with YEAR(2) metadata
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`y2` year(2) DEFAULT NULL,
|
|
`i` int(11) DEFAULT NULL,
|
|
`i_chk` int(11) DEFAULT NULL,
|
|
`y4` year(4) DEFAULT NULL,
|
|
`y4_chk` year(4) DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
# Run CHECK TABLE, it should indicate table need a REPAIR TABLE
|
|
CHECK TABLE t1 FOR UPGRADE;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check error Table rebuild required. Please do "ALTER TABLE `t1` FORCE" or dump/reload to fix it!
|
|
# Run ALTER TABLE ... FORCE to alter the table and repair the YEAR(2) fields
|
|
ALTER TABLE t1 FORCE;
|
|
Warnings:
|
|
Warning 1818 YEAR(2) column type is deprecated. Creating YEAR(4) column instead.
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`y2` year(4) DEFAULT NULL,
|
|
`i` int(11) DEFAULT NULL,
|
|
`i_chk` int(11) DEFAULT NULL,
|
|
`y4` year(4) DEFAULT NULL,
|
|
`y4_chk` year(4) DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
#
|
|
# Test mysql_upgrade tool
|
|
#
|
|
Warning: Using a password on the command line interface can be insecure.
|
|
Warning: Using a password on the command line interface can be insecure.
|
|
mysql.columns_priv OK
|
|
mysql.db OK
|
|
mysql.event OK
|
|
mysql.func OK
|
|
mysql.general_log OK
|
|
mysql.help_category OK
|
|
mysql.help_keyword OK
|
|
mysql.help_relation OK
|
|
mysql.help_topic OK
|
|
mysql.innodb_index_stats OK
|
|
mysql.innodb_table_stats OK
|
|
mysql.ndb_binlog_index OK
|
|
mysql.plugin OK
|
|
mysql.proc OK
|
|
mysql.procs_priv OK
|
|
mysql.proxies_priv OK
|
|
mysql.servers OK
|
|
mysql.slave_master_info OK
|
|
mysql.slave_relay_log_info OK
|
|
mysql.slave_worker_info OK
|
|
mysql.slow_log OK
|
|
mysql.tables_priv OK
|
|
mysql.time_zone OK
|
|
mysql.time_zone_leap_second OK
|
|
mysql.time_zone_name OK
|
|
mysql.time_zone_transition OK
|
|
mysql.time_zone_transition_type OK
|
|
mysql.user OK
|
|
Warning: Using a password on the command line interface can be insecure.
|
|
Warning: Using a password on the command line interface can be insecure.
|
|
Warning: Using a password on the command line interface can be insecure.
|
|
mtr.global_suppressions OK
|
|
mtr.test_suppressions OK
|
|
test.t1
|
|
error : Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
|
|
|
|
Repairing tables
|
|
test.t1
|
|
Warning : YEAR(2) column type is deprecated. Creating YEAR(4) column instead.
|
|
status : OK
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`y2` year(4) DEFAULT NULL,
|
|
`i` int(11) DEFAULT NULL,
|
|
`i_chk` int(11) DEFAULT NULL,
|
|
`y4` year(4) DEFAULT NULL,
|
|
`y4_chk` year(4) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
#
|