How MySQL Partitioning Handles NULL Handling of NULL with LIST partitioning.   A table that is partitioned by  LIST  admits  NULL  values if and only if one of its partitions is defined using that value-list that contains  NULL . The converse of this is that a table partitioned by  LIST  which does not explicitly use  NULL  in a value list rejects rows resulting in a NULL  value for the partitioning expression, as shown in this example: Only rows having a  c1  value between  0  and  8  inclusive can be inserted into  ts1 .  NULL  falls outside this range, just like the number  9 . We can create tables  ts2  and  ts3  having value lists containing  NULL , as shown here: When defining value lists for partitioning, you can (and should) treat  NULL  just as you would any other value. For example, both  VALUES IN (NULL)  and  VALUES IN (1, 4, 7, NULL)  are valid, as are VALUES IN (1, NULL, 4, 7) ,  VALUES IN (NULL, 1, 4, 7) , and so on. You can insert a row having  NULL  for column  c1  into each of the tables  ts2  and  ts3 : By issuing the appropriate query against  INFORMATION_SCHEMA.PARTITIONS , you can determine which partitions were used to store the rows just inserted (we assume, as in the previous examples, that the partitioned tables were created in the  p  database): mysql>  INSERT INTO ts2 VALUES (NULL, ’mothra’); Query OK, 1 row affected (0.00 sec) mysql>  INSERT INTO ts3 VALUES (NULL, ’mothra’); Query OK, 1 row affected (0.00 sec) mysql>  CREATE TABLE ts2 ( -> c1 INT, -> c2 VARCHAR(20) ->  ) ->  PARTITION BY LIST(c1) ( -> PARTITION p0 VALUES IN (0, 3, 6), -> PARTITION p1 VALUES IN (1, 4, 7), -> PARTITION p2 VALUES IN (2, 5, 8), -> PARTITION p3 VALUES IN (NULL) ->  ); Query OK, 0 rows affected (0.01 sec) mysql>  CREATE TABLE ts3 ( -> c1 INT, -> c2 VARCHAR(20) ->  ) ->  PARTITION BY LIST(c1) ( -> PARTITION p0 VALUES IN (0, 3, 6), -> PARTITION p1 VALUES IN (1, 4, 7, NULL), -> PARTITION p2 VALUES IN (2, 5, 8) ->  ); Query OK, 0 rows affected (0.01 sec) mysql>  CREATE TABLE ts1 ( -> c1 INT, -> c2 VARCHAR(20) ->  ) ->  PARTITION BY LIST(c1) ( -> PARTITION p0 VALUES IN (0, 3, 6), -> PARTITION p1 VALUES IN (1, 4, 7), -> PARTITION p2 VALUES IN (2, 5, 8) ->  ); Query OK, 0 rows affected (0.01 sec) mysql>  INSERT INTO ts1 VALUES (9, ’mothra’); ERROR 1504 (HY000): Table has no partition for value 9 mysql>  INSERT INTO ts1 VALUES (NULL, ’mothra’); ERROR 1504 (HY000): Table has no partition for value NULL 4684