Skip to content

Commit c02db53

Browse files
author
Xing Zhang
committed
Bug#21774967: MYSQL ACCEPTS NON-ASCII IN ASCII COLUMNS
This is caused by the code point check function shared by ascii and other 8bit charsets. It actually doesn't check the code point. Fix it by adding seperate code point check function for ascii. Give user a warning message in current build. Will reject such kind of input in future. Reviewed-by: Roy Lyseng <roy.lyseng@oracle.com> Reviewed-by: Tor Didriksen <tor.didriksen@oracle.com>
1 parent 2690b7e commit c02db53

File tree

7 files changed

+497
-12
lines changed

7 files changed

+497
-12
lines changed

include/m_ctype.h

+1
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,7 @@ typedef struct my_charset_handler_st
371371
} MY_CHARSET_HANDLER;
372372

373373
extern MY_CHARSET_HANDLER my_charset_8bit_handler;
374+
extern MY_CHARSET_HANDLER my_charset_ascii_handler;
374375
extern MY_CHARSET_HANDLER my_charset_ucs2_handler;
375376

376377

mysql-test/r/insert_update.result

+212
Original file line numberDiff line numberDiff line change
@@ -416,3 +416,215 @@ select if( @stamp1 = @stamp2, "correct", "wrong");
416416
if( @stamp1 = @stamp2, "correct", "wrong")
417417
correct
418418
drop table t1;
419+
# Bug 21774967: MYSQL ACCEPTS NON-ASCII IN ASCII COLUMNS
420+
CREATE TABLE t1(
421+
a CHAR(20) CHARACTER SET ascii,
422+
b VARCHAR(20) CHARACTER SET ascii,
423+
c TEXT(20) CHARACTER SET ascii
424+
);
425+
CREATE TABLE t2(
426+
a CHAR(20) CHARACTER SET ascii COLLATE ascii_general_ci,
427+
b VARCHAR(20) CHARACTER SET ascii COLLATE ascii_general_ci,
428+
c TEXT(20) CHARACTER SET ascii COLLATE ascii_general_ci
429+
);
430+
CREATE TABLE t3(
431+
a CHAR(20) CHARACTER SET ascii COLLATE ascii_bin,
432+
b VARCHAR(20) CHARACTER SET ascii COLLATE ascii_bin,
433+
c TEXT(20) CHARACTER SET ascii COLLATE ascii_bin
434+
);
435+
SET SQL_MODE="STRICT_TRANS_TABLES";
436+
Warnings:
437+
Warning 3135 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
438+
INSERT INTO t1 values(x'8142', x'8142', x'8142');
439+
Warnings:
440+
Warning 1300 Invalid ascii character string: '\x81B'
441+
Warning 1300 Invalid ascii character string: '\x81B'
442+
Warning 1300 Invalid ascii character string: '\x81B'
443+
UPDATE t1 SET a=x'8243' where a=x'8142';
444+
Warnings:
445+
Warning 1300 Invalid ascii character string: '\x82C'
446+
INSERT INTO t2 values(x'8142', x'8142', x'8142');
447+
Warnings:
448+
Warning 1300 Invalid ascii character string: '\x81B'
449+
Warning 1300 Invalid ascii character string: '\x81B'
450+
Warning 1300 Invalid ascii character string: '\x81B'
451+
UPDATE t2 SET a=x'8243' where a=x'8142';
452+
Warnings:
453+
Warning 1300 Invalid ascii character string: '\x82C'
454+
INSERT INTO t3 values(x'8142', x'8142', x'8142');
455+
Warnings:
456+
Warning 1300 Invalid ascii character string: '\x81B'
457+
Warning 1300 Invalid ascii character string: '\x81B'
458+
Warning 1300 Invalid ascii character string: '\x81B'
459+
UPDATE t3 SET a=x'8243' where a=x'8142';
460+
Warnings:
461+
Warning 1300 Invalid ascii character string: '\x82C'
462+
SET SQL_MODE="";
463+
INSERT INTO t1 values(x'8142', x'8142', x'8142');
464+
Warnings:
465+
Warning 1300 Invalid ascii character string: '\x81B'
466+
Warning 1300 Invalid ascii character string: '\x81B'
467+
Warning 1300 Invalid ascii character string: '\x81B'
468+
UPDATE t1 SET a=x'8243' where a=x'8142';
469+
Warnings:
470+
Warning 1300 Invalid ascii character string: '\x82C'
471+
INSERT INTO t2 values(x'8142', x'8142', x'8142');
472+
Warnings:
473+
Warning 1300 Invalid ascii character string: '\x81B'
474+
Warning 1300 Invalid ascii character string: '\x81B'
475+
Warning 1300 Invalid ascii character string: '\x81B'
476+
UPDATE t2 SET a=x'8243' where a=x'8142';
477+
Warnings:
478+
Warning 1300 Invalid ascii character string: '\x82C'
479+
INSERT INTO t3 values(x'8142', x'8142', x'8142');
480+
Warnings:
481+
Warning 1300 Invalid ascii character string: '\x81B'
482+
Warning 1300 Invalid ascii character string: '\x81B'
483+
Warning 1300 Invalid ascii character string: '\x81B'
484+
UPDATE t3 SET a=x'8243' where a=x'8142';
485+
Warnings:
486+
Warning 1300 Invalid ascii character string: '\x82C'
487+
CREATE VIEW v1 AS SELECT * FROM t1;
488+
CREATE VIEW v2 AS SELECT * FROM t2;
489+
CREATE VIEW v3 AS SELECT * FROM t3;
490+
SET SQL_MODE="STRICT_TRANS_TABLES";
491+
Warnings:
492+
Warning 3135 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
493+
INSERT INTO v1 values(x'8142', x'8142', x'8142');
494+
Warnings:
495+
Warning 1300 Invalid ascii character string: '\x81B'
496+
Warning 1300 Invalid ascii character string: '\x81B'
497+
Warning 1300 Invalid ascii character string: '\x81B'
498+
UPDATE v1 SET a=x'8243' where a=x'8142';
499+
Warnings:
500+
Warning 1300 Invalid ascii character string: '\x82C'
501+
INSERT INTO v2 values(x'8142', x'8142', x'8142');
502+
Warnings:
503+
Warning 1300 Invalid ascii character string: '\x81B'
504+
Warning 1300 Invalid ascii character string: '\x81B'
505+
Warning 1300 Invalid ascii character string: '\x81B'
506+
UPDATE v2 SET a=x'8243' where a=x'8142';
507+
Warnings:
508+
Warning 1300 Invalid ascii character string: '\x82C'
509+
INSERT INTO v3 values(x'8142', x'8142', x'8142');
510+
Warnings:
511+
Warning 1300 Invalid ascii character string: '\x81B'
512+
Warning 1300 Invalid ascii character string: '\x81B'
513+
Warning 1300 Invalid ascii character string: '\x81B'
514+
UPDATE v3 SET a=x'8243' where a=x'8142';
515+
Warnings:
516+
Warning 1300 Invalid ascii character string: '\x82C'
517+
SET SQL_MODE="";
518+
INSERT INTO v1 values(x'8142', x'8142', x'8142');
519+
Warnings:
520+
Warning 1300 Invalid ascii character string: '\x81B'
521+
Warning 1300 Invalid ascii character string: '\x81B'
522+
Warning 1300 Invalid ascii character string: '\x81B'
523+
UPDATE v1 SET a=x'8243' where a=x'8142';
524+
Warnings:
525+
Warning 1300 Invalid ascii character string: '\x82C'
526+
INSERT INTO v2 values(x'8142', x'8142', x'8142');
527+
Warnings:
528+
Warning 1300 Invalid ascii character string: '\x81B'
529+
Warning 1300 Invalid ascii character string: '\x81B'
530+
Warning 1300 Invalid ascii character string: '\x81B'
531+
UPDATE v2 SET a=x'8243' where a=x'8142';
532+
Warnings:
533+
Warning 1300 Invalid ascii character string: '\x82C'
534+
INSERT INTO v3 values(x'8142', x'8142', x'8142');
535+
Warnings:
536+
Warning 1300 Invalid ascii character string: '\x81B'
537+
Warning 1300 Invalid ascii character string: '\x81B'
538+
Warning 1300 Invalid ascii character string: '\x81B'
539+
UPDATE v3 SET a=x'8243' where a=x'8142';
540+
Warnings:
541+
Warning 1300 Invalid ascii character string: '\x82C'
542+
DROP VIEW v1;
543+
DROP VIEW v2;
544+
DROP VIEW v3;
545+
DROP TABLE t1;
546+
DROP TABLE t2;
547+
DROP TABLE t3;
548+
CREATE TABLE t_latin1(
549+
a CHAR(20) CHARACTER SET latin1,
550+
b VARCHAR(20) CHARACTER SET latin1,
551+
c TEXT(20) CHARACTER SET latin1
552+
);
553+
CREATE TABLE t_gb2312(
554+
a CHAR(20) CHARACTER SET gb2312,
555+
b VARCHAR(20) CHARACTER SET gb2312,
556+
c TEXT(20) CHARACTER SET gb2312
557+
);
558+
CREATE TABLE t_utf8(
559+
a CHAR(20) CHARACTER SET utf8,
560+
b VARCHAR(20) CHARACTER SET utf8,
561+
c TEXT(20) CHARACTER SET utf8
562+
);
563+
SET SQL_MODE="STRICT_TRANS_TABLES";
564+
Warnings:
565+
Warning 3135 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
566+
INSERT INTO t_latin1 values(x'f242', x'f242', x'f242');
567+
UPDATE t_latin1 SET a=x'f343' where a=x'f242';
568+
INSERT INTO t_gb2312 values(x'e5ac', x'e5ac', x'e5ac');
569+
UPDATE t_gb2312 SET a=x'e6af' where a=x'e5ac';
570+
INSERT INTO t_utf8 values(x'e4b8ad', x'e4b8ad', x'e4b8ad');
571+
INSERT INTO t_utf8 values(x'f4b8ad', x'f4b8ad', x'f4b8ad');
572+
ERROR HY000: Incorrect string value: '\xF4\xB8\xAD' for column 'a' at row 1
573+
UPDATE t_utf8 SET a=x'e69687' where a=x'e4b8ad';
574+
UPDATE t_utf8 SET a=x'f69687' where a=x'e69687';
575+
ERROR HY000: Incorrect string value: '\xF6\x96\x87' for column 'a' at row 1
576+
SET SQL_MODE="";
577+
INSERT INTO t_latin1 values(x'f242', x'f242', x'f242');
578+
UPDATE t_latin1 SET a=x'f343' where a=x'f242';
579+
INSERT INTO t_gb2312 values(x'e5ac', x'e5ac', x'e5ac');
580+
UPDATE t_gb2312 SET a=x'e6af' where a=x'e5ac';
581+
INSERT INTO t_utf8 values(x'e4b8ad', x'e4b8ad', x'e4b8ad');
582+
INSERT INTO t_utf8 values(x'f4b8ad', x'f4b8ad', x'f4b8ad');
583+
Warnings:
584+
Warning 1366 Incorrect string value: '\xF4\xB8\xAD' for column 'a' at row 1
585+
Warning 1366 Incorrect string value: '\xF4\xB8\xAD' for column 'b' at row 1
586+
Warning 1366 Incorrect string value: '\xF4\xB8\xAD' for column 'c' at row 1
587+
UPDATE t_utf8 SET a=x'e69687' where a=x'e4b8ad';
588+
UPDATE t_utf8 SET a=x'f69687' where a=x'e69687';
589+
Warnings:
590+
Warning 1366 Incorrect string value: '\xF6\x96\x87' for column 'a' at row 1
591+
Warning 1366 Incorrect string value: '\xF6\x96\x87' for column 'a' at row 2
592+
CREATE VIEW v_latin1 AS SELECT * FROM t_latin1;
593+
CREATE VIEW v_gb2312 AS SELECT * FROM t_gb2312;
594+
CREATE VIEW v_utf8 AS SELECT * FROM t_utf8;
595+
SET SQL_MODE="STRICT_TRANS_TABLES";
596+
Warnings:
597+
Warning 3135 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
598+
INSERT INTO v_latin1 values(x'f242', x'f242', x'f242');
599+
UPDATE v_latin1 SET a=x'f343' where a=x'f242';
600+
INSERT INTO v_gb2312 values(x'e5ac', x'e5ac', x'e5ac');
601+
UPDATE v_gb2312 SET a=x'e6af' where a=x'e5ac';
602+
INSERT INTO v_utf8 values(x'e4b8ad', x'e4b8ad', x'e4b8ad');
603+
INSERT INTO v_utf8 values(x'f4b8ad', x'f4b8ad', x'f4b8ad');
604+
ERROR HY000: Incorrect string value: '\xF4\xB8\xAD' for column 'a' at row 1
605+
UPDATE v_utf8 SET a=x'e69687' where a=x'e4b8ad';
606+
UPDATE v_utf8 SET a=x'f69687' where a=x'e69687';
607+
ERROR HY000: Incorrect string value: '\xF6\x96\x87' for column 'a' at row 4
608+
SET SQL_MODE="";
609+
INSERT INTO v_latin1 values(x'f242', x'f242', x'f242');
610+
UPDATE v_latin1 SET a=x'f343' where a=x'f242';
611+
INSERT INTO v_gb2312 values(x'e5ac', x'e5ac', x'e5ac');
612+
UPDATE v_gb2312 SET a=x'e6af' where a=x'e5ac';
613+
INSERT INTO v_utf8 values(x'e4b8ad', x'e4b8ad', x'e4b8ad');
614+
INSERT INTO v_utf8 values(x'f4b8ad', x'f4b8ad', x'f4b8ad');
615+
Warnings:
616+
Warning 1366 Incorrect string value: '\xF4\xB8\xAD' for column 'a' at row 1
617+
Warning 1366 Incorrect string value: '\xF4\xB8\xAD' for column 'b' at row 1
618+
Warning 1366 Incorrect string value: '\xF4\xB8\xAD' for column 'c' at row 1
619+
UPDATE v_utf8 SET a=x'e69687' where a=x'e4b8ad';
620+
UPDATE v_utf8 SET a=x'f69687' where a=x'e69687';
621+
Warnings:
622+
Warning 1366 Incorrect string value: '\xF6\x96\x87' for column 'a' at row 4
623+
Warning 1366 Incorrect string value: '\xF6\x96\x87' for column 'a' at row 5
624+
DROP VIEW v_latin1;
625+
DROP VIEW v_gb2312;
626+
DROP VIEW v_utf8;
627+
DROP TABLE t_latin1;
628+
DROP TABLE t_gb2312;
629+
DROP TABLE t_utf8;
630+
SET SQL_MODE=DEFAULT;

mysql-test/t/insert_update.test

+157
Original file line numberDiff line numberDiff line change
@@ -308,3 +308,160 @@ insert into t1(f1) values(1) on duplicate key update f1=1;
308308
select @stamp2:=f2 from t1;
309309
select if( @stamp1 = @stamp2, "correct", "wrong");
310310
drop table t1;
311+
312+
--echo # Bug 21774967: MYSQL ACCEPTS NON-ASCII IN ASCII COLUMNS
313+
CREATE TABLE t1(
314+
a CHAR(20) CHARACTER SET ascii,
315+
b VARCHAR(20) CHARACTER SET ascii,
316+
c TEXT(20) CHARACTER SET ascii
317+
);
318+
CREATE TABLE t2(
319+
a CHAR(20) CHARACTER SET ascii COLLATE ascii_general_ci,
320+
b VARCHAR(20) CHARACTER SET ascii COLLATE ascii_general_ci,
321+
c TEXT(20) CHARACTER SET ascii COLLATE ascii_general_ci
322+
);
323+
CREATE TABLE t3(
324+
a CHAR(20) CHARACTER SET ascii COLLATE ascii_bin,
325+
b VARCHAR(20) CHARACTER SET ascii COLLATE ascii_bin,
326+
c TEXT(20) CHARACTER SET ascii COLLATE ascii_bin
327+
);
328+
329+
SET SQL_MODE="STRICT_TRANS_TABLES";
330+
#--warning ER_INVALID_CHARACTER_STRING
331+
INSERT INTO t1 values(x'8142', x'8142', x'8142');
332+
UPDATE t1 SET a=x'8243' where a=x'8142';
333+
#--warning ER_INVALID_CHARACTER_STRING
334+
INSERT INTO t2 values(x'8142', x'8142', x'8142');
335+
UPDATE t2 SET a=x'8243' where a=x'8142';
336+
#--warning ER_INVALID_CHARACTER_STRING
337+
INSERT INTO t3 values(x'8142', x'8142', x'8142');
338+
UPDATE t3 SET a=x'8243' where a=x'8142';
339+
SET SQL_MODE="";
340+
#--warning ER_INVALID_CHARACTER_STRING
341+
INSERT INTO t1 values(x'8142', x'8142', x'8142');
342+
UPDATE t1 SET a=x'8243' where a=x'8142';
343+
#--warning ER_INVALID_CHARACTER_STRING
344+
INSERT INTO t2 values(x'8142', x'8142', x'8142');
345+
UPDATE t2 SET a=x'8243' where a=x'8142';
346+
#--warning ER_INVALID_CHARACTER_STRING
347+
INSERT INTO t3 values(x'8142', x'8142', x'8142');
348+
UPDATE t3 SET a=x'8243' where a=x'8142';
349+
350+
CREATE VIEW v1 AS SELECT * FROM t1;
351+
CREATE VIEW v2 AS SELECT * FROM t2;
352+
CREATE VIEW v3 AS SELECT * FROM t3;
353+
354+
SET SQL_MODE="STRICT_TRANS_TABLES";
355+
#--warning ER_INVALID_CHARACTER_STRING
356+
INSERT INTO v1 values(x'8142', x'8142', x'8142');
357+
UPDATE v1 SET a=x'8243' where a=x'8142';
358+
#--warning ER_INVALID_CHARACTER_STRING
359+
INSERT INTO v2 values(x'8142', x'8142', x'8142');
360+
UPDATE v2 SET a=x'8243' where a=x'8142';
361+
#--warning ER_INVALID_CHARACTER_STRING
362+
INSERT INTO v3 values(x'8142', x'8142', x'8142');
363+
UPDATE v3 SET a=x'8243' where a=x'8142';
364+
SET SQL_MODE="";
365+
#--warning ER_INVALID_CHARACTER_STRING
366+
INSERT INTO v1 values(x'8142', x'8142', x'8142');
367+
UPDATE v1 SET a=x'8243' where a=x'8142';
368+
#--warning ER_INVALID_CHARACTER_STRING
369+
INSERT INTO v2 values(x'8142', x'8142', x'8142');
370+
UPDATE v2 SET a=x'8243' where a=x'8142';
371+
#--warning ER_INVALID_CHARACTER_STRING
372+
INSERT INTO v3 values(x'8142', x'8142', x'8142');
373+
UPDATE v3 SET a=x'8243' where a=x'8142';
374+
375+
DROP VIEW v1;
376+
DROP VIEW v2;
377+
DROP VIEW v3;
378+
379+
DROP TABLE t1;
380+
DROP TABLE t2;
381+
DROP TABLE t3;
382+
383+
CREATE TABLE t_latin1(
384+
a CHAR(20) CHARACTER SET latin1,
385+
b VARCHAR(20) CHARACTER SET latin1,
386+
c TEXT(20) CHARACTER SET latin1
387+
);
388+
CREATE TABLE t_gb2312(
389+
a CHAR(20) CHARACTER SET gb2312,
390+
b VARCHAR(20) CHARACTER SET gb2312,
391+
c TEXT(20) CHARACTER SET gb2312
392+
);
393+
CREATE TABLE t_utf8(
394+
a CHAR(20) CHARACTER SET utf8,
395+
b VARCHAR(20) CHARACTER SET utf8,
396+
c TEXT(20) CHARACTER SET utf8
397+
);
398+
SET SQL_MODE="STRICT_TRANS_TABLES";
399+
INSERT INTO t_latin1 values(x'f242', x'f242', x'f242');
400+
UPDATE t_latin1 SET a=x'f343' where a=x'f242';
401+
INSERT INTO t_gb2312 values(x'e5ac', x'e5ac', x'e5ac');
402+
UPDATE t_gb2312 SET a=x'e6af' where a=x'e5ac';
403+
404+
INSERT INTO t_utf8 values(x'e4b8ad', x'e4b8ad', x'e4b8ad');
405+
--disable_abort_on_error
406+
INSERT INTO t_utf8 values(x'f4b8ad', x'f4b8ad', x'f4b8ad');
407+
--enable_abort_on_error
408+
UPDATE t_utf8 SET a=x'e69687' where a=x'e4b8ad';
409+
--disable_abort_on_error
410+
UPDATE t_utf8 SET a=x'f69687' where a=x'e69687';
411+
--enable_abort_on_error
412+
SET SQL_MODE="";
413+
INSERT INTO t_latin1 values(x'f242', x'f242', x'f242');
414+
UPDATE t_latin1 SET a=x'f343' where a=x'f242';
415+
INSERT INTO t_gb2312 values(x'e5ac', x'e5ac', x'e5ac');
416+
UPDATE t_gb2312 SET a=x'e6af' where a=x'e5ac';
417+
418+
INSERT INTO t_utf8 values(x'e4b8ad', x'e4b8ad', x'e4b8ad');
419+
--disable_abort_on_error
420+
INSERT INTO t_utf8 values(x'f4b8ad', x'f4b8ad', x'f4b8ad');
421+
--enable_abort_on_error
422+
UPDATE t_utf8 SET a=x'e69687' where a=x'e4b8ad';
423+
--disable_abort_on_error
424+
UPDATE t_utf8 SET a=x'f69687' where a=x'e69687';
425+
--enable_abort_on_error
426+
427+
CREATE VIEW v_latin1 AS SELECT * FROM t_latin1;
428+
CREATE VIEW v_gb2312 AS SELECT * FROM t_gb2312;
429+
CREATE VIEW v_utf8 AS SELECT * FROM t_utf8;
430+
431+
SET SQL_MODE="STRICT_TRANS_TABLES";
432+
INSERT INTO v_latin1 values(x'f242', x'f242', x'f242');
433+
UPDATE v_latin1 SET a=x'f343' where a=x'f242';
434+
INSERT INTO v_gb2312 values(x'e5ac', x'e5ac', x'e5ac');
435+
UPDATE v_gb2312 SET a=x'e6af' where a=x'e5ac';
436+
437+
INSERT INTO v_utf8 values(x'e4b8ad', x'e4b8ad', x'e4b8ad');
438+
--disable_abort_on_error
439+
INSERT INTO v_utf8 values(x'f4b8ad', x'f4b8ad', x'f4b8ad');
440+
--enable_abort_on_error
441+
UPDATE v_utf8 SET a=x'e69687' where a=x'e4b8ad';
442+
--disable_abort_on_error
443+
UPDATE v_utf8 SET a=x'f69687' where a=x'e69687';
444+
--enable_abort_on_error
445+
SET SQL_MODE="";
446+
INSERT INTO v_latin1 values(x'f242', x'f242', x'f242');
447+
UPDATE v_latin1 SET a=x'f343' where a=x'f242';
448+
INSERT INTO v_gb2312 values(x'e5ac', x'e5ac', x'e5ac');
449+
UPDATE v_gb2312 SET a=x'e6af' where a=x'e5ac';
450+
451+
INSERT INTO v_utf8 values(x'e4b8ad', x'e4b8ad', x'e4b8ad');
452+
--disable_abort_on_error
453+
INSERT INTO v_utf8 values(x'f4b8ad', x'f4b8ad', x'f4b8ad');
454+
--enable_abort_on_error
455+
UPDATE v_utf8 SET a=x'e69687' where a=x'e4b8ad';
456+
--disable_abort_on_error
457+
UPDATE v_utf8 SET a=x'f69687' where a=x'e69687';
458+
--enable_abort_on_error
459+
460+
DROP VIEW v_latin1;
461+
DROP VIEW v_gb2312;
462+
DROP VIEW v_utf8;
463+
464+
DROP TABLE t_latin1;
465+
DROP TABLE t_gb2312;
466+
DROP TABLE t_utf8;
467+
SET SQL_MODE=DEFAULT;

0 commit comments

Comments
 (0)