MySQL錯誤#20786得到的蛋糕!
MySQL Bug #20786 gets cake ! 
The laugh at the end is the best part.
http://bugs.mysql.com/bug.php?id=20786
http://bugs.mysql.com/bug.php?id=20786
另一個MySQL DBA translate.google.com中國翻譯 || Another MySQL DBA translated by translate.google.com for China
# ./backup_restore.py --help
Usage: backup_restore.py --process=[fullbackup,incremental,prepare,restore] --help --version --showcommands=1
This program enables you to backup full and incremental backups then prepare
and restore them using Percona's Xtrabackup
Options:
--version show program's version number and exit
-h, --help show this help message and exit
--process=PROCESS What would you like to do --process=
[fullbackup,incremental,prepare,restore]
--debug=DEBUG TURN DEBUG ON 1 OR OFF 0 OR VERBOSE 3
--showcommands=SHOWCOMMANDS
Shows the commands instead of executing them except
for the restore section because we go through that
step by step
--backup_root_directory=BACKUP_ROOT_DIRECTORY
THE ROOT DIRECTORY OF ALL YOUR BACKUPS, You can set
DEFAULT at start of the script
--percona_xtrabackup_location=PERCONA_XTRABACKUP_LOCATION
THE LOCATION OF YOUR xtrabackup FILE, You can set
DEFAULT at start of the script
--datadir=DATADIR MYSQL DATA DIR LOCATION, You can set DEFAULT at start
of the script
--username=DB_USERNAME
MySQL Username, You can set DEFAULT at start of the
script
--password=DB_PASSWORD
MySQL Password, You can set DEFAULT at start of the
script
--default_file=DEFAULT_FILE
MySQL my.cnf file location, You can set DEFAULT at
start of the script
--options=PERCONA_OPTIONS
Additional Options for innobackupex 
MariaDB [(none)]> select @@max_write_lock_count, @@max_binlog_cache_size, @@max_seeks_for_key, @@myisam_max_sort_file_size\G
*************************** 1. row ***************************
@@max_write_lock_count: 4294967295                     -- 4 GB
@@max_binlog_cache_size: 1844674407370954752          --1.6 EB
@@max_seeks_for_key: 429496729                         -- 4 GB
@@myisam_max_sort_file_size: 9223372036853727232        --8 EB 
MariaDB [(none)]> SET GLOBAL max_binlog_cache_size = 4294967296;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> SELECT @@max_binlog_cache_size;
+-------------------------+
| @@max_binlog_cache_size |
+-------------------------+
| 4294967296 | -- 4GB
+-------------------------+
1 row in set (0.00 sec) 
 [root@Fedora64 10]# rpm -qa | grep maria 
 mariadb-5.5.31-1.fc17.x86_64 
 mariadb-server-5.5.31-1.fc17.x86_64 
 mariadb-libs-5.5.31-1.fc17.x86_64 
 mariadb-bench-5.5.31-1.fc17.x86_64 
 mariadb-devel-5.5.31-1.fc17.x86_64 
 MariaDB-10.0.3-fedora17-x86_64-client.rpm 
 MariaDB-10.0.3-fedora17-x86_64-common.rpm 
 MariaDB-10.0.3-fedora17-x86_64-compat.rpm 
 MariaDB-10.0.3-fedora17-x86_64-connect-engine.rpm 
 MariaDB-10.0.3-fedora17-x86_64-devel.rpm 
 MariaDB-10.0.3-fedora17-x86_64-server.rpm 
 MariaDB-10.0.3-fedora17-x86_64-shared.rpm 
 MariaDB-10.0.3-fedora17-x86_64-test.rpm [root@Fedora64 10]# rpm -Uhv *.rpm 
 warning: MariaDB-10.0.3-fedora17-x86_64-client.rpm: Header V3 DSA/SHA1 Signature, key ID 1bb943db: NOKEY 
 error: Failed dependencies: 
 libodbc.so.2()(64bit) is needed by MariaDB-connect-engine-10.0.3-1.x86_64 
 MySQL-devel conflicts with (installed) mariadb-devel-5.5.31-1.fc17.x86_64   MariaDB-server-10.0.3-1.x86_64 conflicts with file from package mariadb-server-5.5.31-1.fc17.x86_64 [root@Fedora64 10]#  ,用於演示和評估,所以我只是刪除了所有我能不得不卸載。 我希望升級工作,但仍然是阿爾法代碼。 
 [root@Fedora64 10]# rpm -e mariadb mariadb-server mariadb-bench 
 [root@Fedora64 10]# rpm -e mariadb-libs perl-DBD-MySQL percona-xtrabackup 
 [root@Fedora64 10]# rpm -ihv *.rpm 
 Preparing...                ########################################### [100%] 
 1:MariaDB-common         ########################################### [ 11%] 
 2:MariaDB-server         ########################################### [ 22%] 
 3:MariaDB-cassandra-engin########################################### [ 33%] 
 4:MariaDB-client         ########################################### [ 44%] 
 5:MariaDB-devel          ########################################### [ 56%] 
 6:MariaDB-shared         ########################################### [ 67%] 
 7:MariaDB-test           ########################################### [ 78%] 
 8:MariaDB-compat         ########################################### [ 89%] 
 9:galera                 ########################################### [100%] 
 [root@Fedora64 10]# /etc/init.d/mysql start 
 Starting MySQL..... SUCCESS! 
 [root@Fedora64 10]# mysql 
 Welcome to the MariaDB monitor.  Commands end with ; or \g. 
 Your MariaDB connection id is 2 
 Server version: 10.0.3-MariaDB MariaDB Server 
 vi /etc/my.cnf 
 [mysqld]userstat=1 # http://www.percona.com/doc/percona-server/5.5/diagnostics/user_stats.html?id=percona-server:features:userstatv2 # https://kb.askmonty.org/en/user-statistics/ feedback=ON 
 # https://kb.askmonty.org/en/user-feedback-plugin/ 
 MariaDB [(none)]> show variables like '%feedback%'; 
 +--------------------------+------------------------------------------+ 
 | Variable_name            | Value                                    | 
 +--------------------------+------------------------------------------+ 
 | feedback_send_retry_wait | 60                                       | 
 | feedback_send_timeout    | 60                                       | 
 ... 
 | feedback_url             | https://mariadb.org/feedback_plugin/post | 
 | feedback_user_info       |                                          | 
 +--------------------------+------------------------------------------+ MariaDB [(none)]> show variables like '%userstat%'; 
 +---------------+-------+ 
 | Variable_name | Value | 
 +---------------+-------+ 
 | userstat      | ON    | 
 +---------------+-------+ 
  
 MariaDB [(none)]> show variables; 
 ERROR 1946 (HY000): Failed to load replication slave GTID position from table mysql.gtid_slave_pos MariaDB [(none)]> create database Start_Of_Demo; -- Just here for the demo
Query OK, 1 row affected (0.00 sec)
[root@Fedora64 src]# innobackupex --no-lock --parallel=4 --user=root --extra-lsndir=/usr/local/src/incremental_last_checkpoint/ --no-timestamp /usr/local/src/fullbackup/
xtrabackup: Transaction log of lsn (1597964) to (1597964) was copied.
innobackupex: Backup created in directory '/usr/local/src/fullbackup'
130609 15:41:39 innobackupex: Connection to database server closed
130609 15:41:39 innobackupex: completed OK!
[root@Fedora64 src]# ls -al fullbackup/
total 18472
drwxr-xr-x. 6 root root 4096 Jun 9 15:41 .
drwxr-xr-x. 6 root root 4096 Jun 9 15:49 ..
-rw-r--r--. 1 root root 260 Jun 9 15:41 backup-my.cnf
-rw-r-----. 1 root root 18874368 Jun 9 15:41 ibdata1
drwxr-xr-x. 2 root root 4096 Jun 9 15:41 mysql
drwxr-xr-x. 2 root root 4096 Jun 9 15:41 performance_schema
drwxr-xr-x. 2 root root 4096 Jun 9 15:41 Start_Of_Demo
drwxr-xr-x. 2 root root 4096 Jun 9 15:41 world
-rw-r--r--. 1 root root 13 Jun 9 15:41 xtrabackup_binary
-rw-r-----. 1 root root 89 Jun 9 15:41 xtrabackup_checkpoints
-rw-r-----. 1 root root 2560 Jun 9 15:41 xtrabackup_logfile
MariaDB [(none)]> create database incremental_1; -- Just here for the demoQuery OK, 1 row affected (0.00 sec)[root@Fedora64 src]#innobackupex --incremental --no-lock --parallel=4 --no-timestamp --user=root --incremental-basedir=/usr/local/src/incremental_last_checkpoint/ --extra-lsndir=/usr/local/src/incremental_last_checkpoint/ /usr/local/src/incremental/
xtrabackup: Transaction log of lsn (1597964) to (1597964) was copied.
innobackupex: Backup created in directory '/usr/local/src/incremental'
130609 15:47:20 innobackupex: Connection to database server closed
130609 15:47:20 innobackupex: completed OK!
[root@Fedora64 src]# ls -al incremental
total 64
drwxr-xr-x. 7 root root 4096 Jun 9 15:47 .
drwxr-xr-x. 6 root root 4096 Jun 9 15:49 ..
-rw-r--r--. 1 root root 260 Jun 9 15:47 backup-my.cnf
-rw-r-----. 1 root root 16384 Jun 9 15:47 ibdata1.delta
-rw-r-----. 1 root root 44 Jun 9 15:47 ibdata1.meta
drwxr-xr-x. 2 root root 4096 Jun 9 15:47 incremental_1
drwxr-xr-x. 2 root root 4096 Jun 9 15:47 mysql
drwxr-xr-x. 2 root root 4096 Jun 9 15:47 performance_schema
drwxr-xr-x. 2 root root 4096 Jun 9 15:47 Start_Of_Demo
drwxr-xr-x. 2 root root 4096 Jun 9 15:47 world
-rw-r--r--. 1 root root 13 Jun 9 15:47 xtrabackup_binary
-rw-r-----. 1 root root 93 Jun 9 15:47 xtrabackup_checkpoints
-rw-r-----. 1 root root 2560 Jun 9 15:47 xtrabackup_logfile MariaDB [(none)]> create database incremental_2;-- Just here for the demoQuery OK, 1 row affected (0.00 sec)[root@Fedora64 src]# innobackupex --incremental --no-lock --parallel=4 --no-timestamp --user=root --incremental-basedir=/usr/local/src/incremental_last_checkpoint/ --extra-lsndir=/usr/local/src/incremental_last_checkpoint/ /usr/local/src/incremental_2/
xtrabackup: Transaction log of lsn (1597964) to (1597964) was copied.
innobackupex: Backup created in directory '/usr/local/src/incremental_2'
130609 15:49:49 innobackupex: Connection to database server closed
130609 15:49:49 innobackupex: completed OK!
[root@Fedora64 src]# ls -al incremental_2
total 68
drwxr-xr-x. 8 root root 4096 Jun 9 15:49 .
drwxr-xr-x. 6 root root 4096 Jun 9 15:49 ..
-rw-r--r--. 1 root root 260 Jun 9 15:49 backup-my.cnf
-rw-r-----. 1 root root 16384 Jun 9 15:49 ibdata1.delta
-rw-r-----. 1 root root 44 Jun 9 15:49 ibdata1.meta
drwxr-xr-x. 2 root root 4096 Jun 9 15:49 incremental_1
drwxr-xr-x. 2 root root 4096 Jun 9 15:49 incremental_2
drwxr-xr-x. 2 root root 4096 Jun 9 15:49 mysql
drwxr-xr-x. 2 root root 4096 Jun 9 15:49 performance_schema
drwxr-xr-x. 2 root root 4096 Jun 9 15:49 Start_Of_Demo
drwxr-xr-x. 2 root root 4096 Jun 9 15:49 world
-rw-r--r--. 1 root root 13 Jun 9 15:49 xtrabackup_binary
-rw-r-----. 1 root root 93 Jun 9 15:49 xtrabackup_checkpoints
-rw-r-----. 1 root root 2560 Jun 9 15:49 xtrabackup_logfile [root@Fedora64 src]# ps -ef | grep mysqlroot 4538 1940 0 15:54 pts/2 00:00:00 grep --color=auto mysql
[root@Fedora64 src]# ls -al /var/lib/mysql/total 28724drwxr-xr-x. 8 mysql mysql 4096 Jun 9 15:53 .drwxr-xr-x. 43 root root 4096 Jun 8 19:41 ..-rw-rw----. 1 mysql mysql 16384 Jun 9 15:53 aria_log.00000001-rw-rw----. 1 mysql mysql 52 Jun 9 15:53 aria_log_control-rw-r--r--. 1 mysql mysql 18874368 Jun 9 15:53 ibdata1-rw-rw----. 1 mysql mysql 5242880 Jun 9 15:53 ib_logfile0-rw-rw----. 1 mysql mysql 5242880 Jun 9 15:17 ib_logfile1drwx------. 2 mysql mysql 4096 Jun 9 15:43 incremental_1drwx------. 2 mysql mysql 4096 Jun 9 15:48 incremental_2drwxr-xr-x. 2 mysql mysql 4096 Jun 9 15:16 mysqldrwxr-xr-x. 2 mysql mysql 4096 Jun 9 15:16 performance_schemadrwx------. 2 mysql mysql 4096 Jun 9 15:40 Start_Of_Demodrwxr-xr-x. 2 mysql mysql 4096 Jun 9 15:16 world
[root@Fedora64 src]# rm -Rf /var/lib/mysql/*innobackupex --copy-back /usr/local/src/fullbackup/
innobackupex: Starting to copy InnoDB log filesinnobackupex: in '/usr/local/src/fullbackup'innobackupex: back to original InnoDB log directory '/var/lib/mysql'innobackupex: Finished copying back files.
130609 15:54:57 innobackupex: completed OK!
[root@Fedora64 src]# ls -al /var/lib/mysql/total 18456drwxr-xr-x. 6 mysql mysql 4096 Jun 9 15:54 .drwxr-xr-x. 43 root root 4096 Jun 8 19:41 ..-rw-r--r--. 1 root root 18874368 Jun 9 15:54 ibdata1drwxr-xr-x. 2 root root 4096 Jun 9 15:54 mysqldrwxr-xr-x. 2 root root 4096 Jun 9 15:54 performance_schemadrwxr-xr-x. 2 root root 4096 Jun 9 15:54 Start_Of_Demodrwxr-xr-x. 2 root root 4096 Jun 9 15:54 world
[root@Fedora64 mysql]# mysqlWelcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 1Server version: 5.5.31-MariaDB MariaDB Serverinnobackupex --apply-log --redo-only /usr/local/src/fullbackup/xtrabackup: starting shutdown with innodb_fast_shutdown = 1130609 15:57:59 InnoDB: Starting shutdown...130609 15:58:00 InnoDB: Shutdown completed; log sequence number 1597964130609 15:58:00 innobackupex: completed OK!innobackupex --apply-log --redo-only /usr/local/src/fullbackup/ --incremental-dir=/usr/local/src/incremental/130609 15:58:42 innobackupex: completed OK!innobackupex --apply-log /usr/local/src/fullbackup/ --incremental-dir=/usr/local/src/incremental_2/[root@Fedora64 src]# rm -Rf /var/lib/mysql/*[root@Fedora64 mysql]# mysqlWelcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 1Server version: 5.5.31-MariaDB MariaDB Server
Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;+--------------------+| Database |+--------------------+| information_schema || Start_Of_Demo || incremental_1 || incremental_2 || mysql || performance_schema || world |+--------------------+[root@Fedora64 log]# rpm -qa | grep maria 
 mariadb-5.5.31-1.fc17.x86_64 
 mariadb-server-5.5.31-1.fc17.x86_64 
 mariadb-libs-5.5.31-1.fc17.x86_64 
 mariadb-devel-5.5.31-1.fc17.x86_64 
  [root@Fedora64 log]# mysqld_safe 
 130608 19:54:36 mysqld_safe Logging to '/var/log/mysqld.log'. 
 130608 19:54:37 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 
 130608 19:54:39 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 
 
 130608 19:54:37 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 
 130608 19:54:37 InnoDB: The InnoDB memory heap is disabled 
 130608 19:54:37 InnoDB: Mutexes and rw_locks use GCC atomic builtins 
 130608 19:54:37 InnoDB: Compressed tables use zlib 1.2.5 
 130608 19:54:37 InnoDB: Using Linux native AIO 
 130608 19:54:37 InnoDB: Initializing buffer pool, size = 128.0M 
 130608 19:54:37 InnoDB: Completed initialization of buffer pool 
 130608 19:54:37 InnoDB: highest supported file format is Barracuda. 
 130608 19:54:38  InnoDB: Waiting for the background threads to start 
 130608 19:54:39 Percona XtraDB (http://www.percona.com) 5.5.31-MariaDB-30.2 started; log sequence number 1597945 
 130608 19:54:39 [Note] Plugin 'FEEDBACK' is disabled. 
 130608 19:54:39 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 
 130608 19:54:39 [Note] Server socket created on IP: '0.0.0.0'. 
 130608 19:54:39 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 
 130608 19:54:39 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 
  [root@Fedora64 mysql]# ls -la 
 total 28700 
 drwxr-xr-x.  2 mysql mysql     4096 Jun  8 19:58 . 
 drwxr-xr-x. 43 root  root      4096 Jun  8 19:41 .. 
 -rw-rw----.  1 mysql mysql    16384 Jun  8 19:50 aria_log.00000001 
 -rw-rw----.  1 mysql mysql       52 Jun  8 19:50 aria_log_control 
 -rw-rw----.  1 mysql mysql 18874368 Jun  8 19:50 ibdata1 
 -rw-rw----.  1 mysql mysql  5242880 Jun  8 19:58 ib_logfile0 
 -rw-rw----.  1 mysql mysql  5242880 Jun  8 19:45 ib_logfile1 
 [root@Fedora64 mysql]# 
 
 [root@Fedora64 mysql]# mysqld_safe --skip-grant-tables 
 130608 20:02:45 mysqld_safe Logging to '/var/log/mysqld.log'. 
 130608 20:02:45 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 
  [root@Fedora64 /]# mysql_upgrade 
 Phase 1/3: Fixing table and database names 
 Phase 2/3: Checking and upgrading tables 
 Processing databases 
 information_schema 
 Phase 3/3: Running 'mysql_fix_privilege_tables'... 
 ERROR 1049 (42000): Unknown database 'mysql' 
 FATAL ERROR: Upgrade failed 
  [root@Fedora64 /]# mysql 
 Welcome to the MariaDB monitor.  Commands end with ; or \g. 
 Your MariaDB connection id is 10 
 Server version: 5.5.31-MariaDB MariaDB Server 
 
 Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others. 
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
 
 MariaDB [(none)]> show databases; 
 +--------------------+ 
 | Database           | 
 +--------------------+ 
 | information_schema | 
 +--------------------+ 
 1 row in set (0.01 sec) 
 
 MariaDB [(none)]> create database mysql ; 
 Query OK, 1 row affected (0.13 sec) 
 
 MariaDB [(none)]> exit 
 Bye  [root@Fedora64 /]# mysql_upgrade 
 Phase 1/3: Fixing table and database names 
 Phase 2/3: Checking and upgrading tables 
 Processing databases 
 information_schema 
 mysql 
 Phase 3/3: Running 'mysql_fix_privilege_tables'... 
 OK 
 [root@Fedora64 /]#  [root@Fedora64 mysql]# mysqld_safe 
 [root@Fedora64 /]# mysql 
 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 
  [root@Fedora64 mysql]# mysqld_safe --skip-grant-tables 
 
 MariaDB [mysql]> show tables; 
 +---------------------------+ 
 | Tables_in_mysql           | 
 +---------------------------+ 
 | columns_priv              | 
 | db                        | 
 | event                     | 
 | func                      | 
 | general_log               | 
 | help_category             | 
 | help_keyword              | 
 | help_relation             | 
 | help_topic                | 
 | host                      | 
 | ndb_binlog_index          | 
 | plugin                    | 
 | proc                      | 
 | procs_priv                | 
 | proxies_priv              | 
 | servers                   | 
 | slow_log                  | 
 | tables_priv               | 
 | time_zone                 | 
 | time_zone_leap_second     | 
 | time_zone_name            | 
 | time_zone_transition      | 
 | time_zone_transition_type | 
 | user                      | 
 +---------------------------+ 
 24 rows in set (0.01 sec) 
 
 MariaDB [mysql]> select * from user; 
 Empty set (0.00 sec) 
 
 MariaDB [(none)]>  create user root ; 
  MariaDB [(none)]> show databases; 
 +--------------------+ 
 | Database           | 
 +--------------------+ 
 | information_schema | 
 +--------------------+ 
 1 row in set (0.00 sec) 
  UPDATE user 
 SET Select_priv = 'Y', 
 Insert_priv='Y', 
 Update_priv='Y', 
 Delete_priv='Y', 
 Create_priv='Y', 
 Drop_priv='Y', 
 Reload_priv='Y', 
 Shutdown_priv='Y', 
 Process_priv='Y', 
 File_priv='Y', 
 Grant_priv='Y', 
 References_priv='Y', 
 Index_priv='Y', 
 Alter_priv='Y', 
 Show_db_priv='Y', 
 Super_priv='Y', 
 Create_tmp_table_priv='Y', 
 Lock_tables_priv='Y', 
 Execute_priv='Y', 
 Repl_slave_priv='Y', 
 Repl_client_priv='Y', 
 Create_view_priv='Y', 
 Show_view_priv='Y', 
 Create_routine_priv='Y', 
 Alter_routine_priv='Y', 
 Create_user_priv='Y', 
 Event_priv='Y', 
 Trigger_priv='Y', 
 Create_tablespace_priv='Y' 
 WHERE user = 'root';  [root@Fedora64 /]# ps -ef | grep mysql 
 root      4522  1513  0 20:26 pts/0    00:00:00 /bin/sh /bin/mysqld_safe 
 mysql     4650  4522  0 20:27 pts/0    00:00:03 /usr/libexec/mysqld 
--basedir=/usr --datadir=/var/lib/mysql 
--plugin-dir=/usr/lib64/mysql/plugin --user=mysql 
--log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid 
--socket=/var/lib/mysql/mysql.sock 
 root      8348  3178  0 20:47 pts/1    00:00:00 grep --color=auto mysql 
 [root@Fedora64 /]# mysql 
 Welcome to the MariaDB monitor.  Commands end with ; or \g. 
 Your MariaDB connection id is 2 
 Server version: 5.5.31-MariaDB MariaDB Server 
 
 Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others. 
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
 
 MariaDB [(none)]> 
  CREATE TEMPORARY TABLE `temporary_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ;CREATE TABLE `memory_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MEMORY;SELECT TABLE_SCHEMA, ENGINE, COUNT(*) AS count_tables,
SUM(DATA_LENGTH+INDEX_LENGTH) AS size,
SUM(INDEX_LENGTH) AS index_size FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA NOT IN ('mysql', 'INFORMATION_SCHEMA')
AND ENGINE = "MEMORY" GROUP BY TABLE_SCHEMA, ENGINE;
CREATE TABLE `details` (
`details_id` int(11) NOT NULL AUTO_INCREMENT,
`details_label` varchar(100) DEFAULT NULL,
PRIMARY KEY (`details_id`)
) ENGINE=InnoDB;
INSERT INTO details VALUES (1,'First Name') , (2, 'Last Name') ;
CREATE TABLE `subjects` (
`subject_id` int(11) NOT NULL AUTO_INCREMENT,
`subject` enum('History','English','Geography','Mathematics','Science','Social Studies','Foreign Languages','Visual and Performing Arts') DEFAULT NULL,
`subject_detail` varchar(255) DEFAULT NULL,
PRIMARY KEY (`subject_id`)
) ENGINE=InnoDB;
INSERT INTO subjects VALUES (1,'Mathematics', 'Algebra') , (2,'History', '1826-1926') , (3,'Geography', ' Africa Studies') ;
CREATE TABLE `student` (
`student_id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(150) DEFAULT NULL,
`student_key` varchar(20) DEFAULT NULL,
`date_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`student_id`)
) ENGINE=InnoDB;
INSERT INTO student (`student_id` ,`email`,`student_key`) VALUES (1,'foobar@gmail.com','iasdjf');
CREATE TABLE `student_details` (
`student_details_id` int(11) NOT NULL AUTO_INCREMENT,
`student_id` int(11) DEFAULT 0,
`details_id` int(11) DEFAULT 0,
`details_value` varchar(255) DEFAULT NULL,
`date_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`student_details_id`)
) ENGINE=InnoDB;
INSERT INTO student_details VALUES (NULL,1,1,'John',NOW()) , (NULL,1,2,'Smith',NOW()) ;
CREATE TABLE `courselist` (
`courselist_id` int(11) NOT NULL AUTO_INCREMENT,
`student_id` int(11) DEFAULT 0,
`subject_id` int(11) DEFAULT NULL,
`status` enum('Waitlisted','Subscribed','Denied') DEFAULT NULL,
`date_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`courselist_id`)
) ENGINE=InnoDB;
INSERT INTO courselist VALUES ( NULL,1, 1 , 'Waitlisted' , NOW() ) , ( NULL,1, 2 , 'Subscribed' , NOW() ) , ( NULL,1, 3 , 'Denied' , NOW() ) ;
> SELECT s.student_id , d.details_label , sd.details_value
-> FROM student s
-> INNER JOIN student_details sd ON s.student_id = sd.student_id
-> INNER JOIN details d ON sd.details_id = d.details_id;
+------------+---------------+---------------+
| student_id | details_label | details_value |
+------------+---------------+---------------+
| 1 | First Name | John |
| 1 | Last Name | Smith |
+------------+---------------+---------------+
2 rows in set (0.00 sec) 
> SELECT s.student_id , d.details_label , sd.details_value , c.status, j.subject, j.subject_detail
-> FROM student s
-> INNER JOIN student_details sd ON s.student_id = sd.student_id
-> INNER JOIN details d ON sd.details_id = d.details_id
-> INNER JOIN courselist c ON s.student_id = c.student_id
-> INNER JOIN subjects j ON j.subject_id = c.subject_id
-> ;
+------------+---------------+---------------+------------+-------------+-----------------+
| student_id | details_label | details_value | status | subject | subject_detail |
+------------+---------------+---------------+------------+-------------+-----------------+
| 1 | First Name | John | Waitlisted | Mathematics | Algebra |
| 1 | Last Name | Smith | Waitlisted | Mathematics | Algebra |
| 1 | First Name | John | Subscribed | History | 1826-1926 |
| 1 | Last Name | Smith | Subscribed | History | 1826-1926 |
| 1 | First Name | John | Denied | Geography | Africa Studies |
| 1 | Last Name | Smith | Denied | Geography | Africa Studies |
+------------+---------------+---------------+------------+-------------+-----------------+
6 rows in set (0.00 sec) 
> SELECT s.student_id ,sd1.details_value as FIRST_NAME, sd2.details_value as LAST_NAME, c.status, j.subject, j.subject_detail
-> FROM student s
-> INNER JOIN student_details sd1 ON s.student_id = sd1.student_id AND sd1.details_id = 1
-> INNER JOIN student_details sd2 ON s.student_id = sd2.student_id AND sd2.details_id = 2
-> INNER JOIN courselist c ON s.student_id = c.student_id
-> INNER JOIN subjects j ON j.subject_id = c.subject_id
-> ;
+------------+------------+-----------+------------+-------------+-----------------+
| student_id | FIRST_NAME | LAST_NAME | status | subject | subject_detail |
+------------+------------+-----------+------------+-------------+-----------------+
| 1 | John | Smith | Waitlisted | Mathematics | Algebra |
| 1 | John | Smith | Subscribed | History | 1826-1926 |
| 1 | John | Smith | Denied | Geography | Africa Studies |
+------------+------------+-----------+------------+-------------+-----------------+
3 rows in set (0.00 sec)