Browse code

Specify collation in field/columns that are important for sorting and search features; the rest can use UTF-8 binary. Eventually, certain other columns that use text in some manner may use different specific Unicode collations.

Clarissa Walker authored on 2026/07/18 06:44:35
Showing 2 changed files
... ...
@@ -60,8 +60,8 @@ CREATE TABLE `fanfiction_authorprefs` (
60 60
 
61 61
 CREATE TABLE `fanfiction_authors` (
62 62
   `uid` int(11) NOT NULL auto_increment,
63
-  `penname` varchar(200) NOT NULL default '',
64
-  `realname` varchar(200) NOT NULL default '',
63
+  `penname` varchar(200) NOT NULL default '' COLLATE utf8mb4_unicode_ci,
64
+  `realname` varchar(200) NOT NULL default '' COLLATE utf8mb4_unicode_ci,
65 65
   `email` varchar(200) NOT NULL default '',
66 66
   `website` varchar(200) NOT NULL default '',
67 67
   `bio` text NOT NULL,
... ...
@@ -72,7 +72,7 @@ CREATE TABLE `fanfiction_authors` (
72 72
   PRIMARY KEY  (`uid`),
73 73
   KEY `penname` (`penname`),
74 74
   KEY `admincreated` (`admincreated`)
75
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
75
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
76 76
 
77 77
 -- --------------------------------------------------------
78 78
 
... ...
@@ -100,7 +100,7 @@ CREATE TABLE `fanfiction_blocks` (
100 100
 CREATE TABLE `fanfiction_categories` (
101 101
   `catid` int(11) NOT NULL auto_increment,
102 102
   `parentcatid` int(11) NOT NULL default '-1',
103
-  `category` varchar(60) NOT NULL default '',
103
+  `category` varchar(60) NOT NULL default '' COLLATE utf8mb4_unicode_ci,
104 104
   `description` text NOT NULL,
105 105
   `image` varchar(100) NOT NULL default '',
106 106
   `locked` tinyint(4) NOT NULL default '0',
... ...
@@ -109,7 +109,7 @@ CREATE TABLE `fanfiction_categories` (
109 109
   `numitems` int(11) NOT NULL default '0',
110 110
   PRIMARY KEY  (`catid`),
111 111
   KEY `byparent` (`parentcatid`,`displayorder`)
112
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
112
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
113 113
 
114 114
 -- --------------------------------------------------------
115 115
 
... ...
@@ -404,8 +404,8 @@ CREATE TABLE `fanfiction_reviews` (
404 404
 
405 405
 CREATE TABLE `fanfiction_series` (
406 406
   `seriesid` int(11) NOT NULL auto_increment,
407
-  `title` varchar(200) NOT NULL default '',
408
-  `summary` text,
407
+  `title` varchar(200) NOT NULL default '' COLLATE utf8mb4_unicode_ci,
408
+  `summary` text COLLATE utf8mb4_unicode_ci,
409 409
   `uid` int(11) NOT NULL default '0',
410 410
   `isopen` tinyint(4) NOT NULL default '0',
411 411
   `catid` varchar(200) NOT NULL default '0',
... ...
@@ -420,7 +420,7 @@ CREATE TABLE `fanfiction_series` (
420 420
   PRIMARY KEY  (`seriesid`),
421 421
   KEY `catid` (`catid`),
422 422
   KEY `owner` (`uid`,`title`)
423
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
423
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
424 424
 
425 425
 -- --------------------------------------------------------
426 426
 -- 
... ...
@@ -448,8 +448,8 @@ CREATE TABLE `fanfiction_stats` (
448 448
 
449 449
 CREATE TABLE `fanfiction_stories` (
450 450
   `sid` int(11) NOT NULL auto_increment,
451
-  `title` varchar(200) NOT NULL default '',
452
-  `summary` text,
451
+  `title` varchar(200) NOT NULL default '' COLLATE utf8mb4_unicode_ci,
452
+  `summary` text COLLATE uft8mb4_unicode_ci,
453 453
   `storynotes` text,
454 454
   `catid` varchar(100) NOT NULL default '0',
455 455
   `classes` varchar(200) default NULL,
... ...
@@ -480,7 +480,7 @@ CREATE TABLE `fanfiction_stories` (
480 480
   KEY `challenges` (`challenges`),
481 481
   KEY `validateduid` (`validated`,`uid`),
482 482
   KEY `recent` (`updated`,`validated`)
483
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
483
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
484 484
 
485 485
 -- --------------------------------------------------------
486 486
 
... ...
@@ -524,8 +524,8 @@ CREATE TABLE IF NOT EXISTS `" . $tableprefix . "fanfiction_authorprefs` (
524 524
 				$output .= "<tr><td>" . $tableprefix . "fanfiction_authorprefs</td><td align='center'>" . ($authorprefs ? "<img src=\"../images/check.gif\">" : "<img src=\"../images/X.gif\">") . "</td></tr>";
525 525
 				$authors = dbquery("CREATE TABLE IF NOT EXISTS `" . $tableprefix . "fanfiction_authors` (
526 526
   `uid` int(11) NOT NULL auto_increment,
527
-  `penname` varchar(200) NOT NULL default '',
528
-  `realname` varchar(200) NOT NULL default '',
527
+  `penname` varchar(200) NOT NULL default '' COLLATE utf8mb4_unicode_ci,
528
+  `realname` varchar(200) NOT NULL default '' COLLATE utf8mb4_unicode_ci,
529 529
   `email` varchar(200) NOT NULL default '',
530 530
   `bio` text NULL,
531 531
   `image` varchar(200) NOT NULL default '',
... ...
@@ -535,7 +535,7 @@ CREATE TABLE IF NOT EXISTS `" . $tableprefix . "fanfiction_authorprefs` (
535 535
   PRIMARY KEY  (`uid`),
536 536
   KEY `penname` (`penname`),
537 537
   KEY `admincreated` (`admincreated`)
538
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;");
538
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;");
539 539
 				$output .= "<tr><td>" . $tableprefix . "fanfiction_authors</td><td align='center'>" . ($authors ? "<img src=\"../images/check.gif\">" : "<img src=\"../images/X.gif\">") . "</td></tr>";
540 540
 				$blocks = dbquery("CREATE TABLE IF NOT EXISTS `" . $tableprefix . "fanfiction_blocks` (
541 541
   `block_id` int(11) NOT NULL auto_increment,
... ...
@@ -551,7 +551,7 @@ CREATE TABLE IF NOT EXISTS `" . $tableprefix . "fanfiction_authorprefs` (
551 551
 				$categories = dbquery("CREATE TABLE IF NOT EXISTS `" . $tableprefix . "fanfiction_categories` (
552 552
   `catid` int(11) NOT NULL auto_increment,
553 553
   `parentcatid` int(11) NOT NULL default '-1',
554
-  `category` varchar(60) NOT NULL default '',
554
+  `category` varchar(60) NOT NULL default '' COLLATE utf8mb4_unicode_ci,
555 555
   `description` text NOT NULL,
556 556
   `image` varchar(100) NOT NULL default '',
557 557
   `locked` char(1) NOT NULL default '0',
... ...
@@ -560,7 +560,7 @@ CREATE TABLE IF NOT EXISTS `" . $tableprefix . "fanfiction_authorprefs` (
560 560
   `numitems` int(11) NOT NULL default '0',
561 561
   PRIMARY KEY  (`catid`),
562 562
   KEY `byparent` (`parentcatid`,`displayorder`)
563
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;");
563
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;");
564 564
 				$output .= "<tr><td>" . $tableprefix . "fanfiction_categories</td><td align='center'>" . ($categories ? "<img src=\"../images/check.gif\">" : "<img src=\"../images/X.gif\">") . "</td></tr>";
565 565
 				$chapters = dbquery("CREATE TABLE IF NOT EXISTS `" . $tableprefix . "fanfiction_chapters` (
566 566
   `chapid` int(11) NOT NULL auto_increment,
... ...
@@ -750,8 +750,8 @@ CREATE TABLE IF NOT EXISTS `" . $tableprefix . "fanfiction_modules` (
750 750
 				$output .= "<tr><td>" . $tableprefix . "fanfiction_reviews</td><td align='center'>" . ($reviews ? "<img src=\"../images/check.gif\">" : "<img src=\"../images/X.gif\">") . "</td></tr>";
751 751
 				$series = dbquery("CREATE TABLE IF NOT EXISTS `" . $tableprefix . "fanfiction_series` (
752 752
   `seriesid` int(11) NOT NULL auto_increment,
753
-  `title` varchar(200) NOT NULL default '',
754
-  `summary` text NOT NULL,
753
+  `title` varchar(200) NOT NULL default '' COLLATE utf8mb4_unicode_ci,
754
+  `summary` text NOT NULL COLLATE utf8mb4_unicode_ci,
755 755
   `uid` int(11) NOT NULL default '0',
756 756
   `isopen` tinyint(4) NOT NULL default '0',
757 757
   `catid` varchar(200) NOT NULL default '0',
... ...
@@ -766,7 +766,7 @@ CREATE TABLE IF NOT EXISTS `" . $tableprefix . "fanfiction_modules` (
766 766
   KEY `characters` (`characters`),
767 767
   KEY `classes` (`classes`),
768 768
   KEY `owner` (`uid`,`title`)
769
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;");
769
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;");
770 770
 				$output .= "<tr><td>" . $tableprefix . "fanfiction_series</td><td align='center'>" . ($series ? "<img src=\"../images/check.gif\">" : "<img src=\"../images/X.gif\">") . "</td></tr>";
771 771
 				$stats = dbquery("CREATE TABLE IF NOT EXISTS `" . $tableprefix . "fanfiction_stats` (
772 772
   `sitekey` varchar(50) NOT NULL default '0',
... ...
@@ -784,8 +784,8 @@ CREATE TABLE IF NOT EXISTS `" . $tableprefix . "fanfiction_modules` (
784 784
 				$output .= "<tr><td>" . $tableprefix . "fanfiction_stats</td><td align='center'>" . ($stats ? "<img src=\"../images/check.gif\">" : "<img src=\"../images/X.gif\">") . "</td></tr>";
785 785
 				$stories = dbquery("CREATE TABLE IF NOT EXISTS `" . $tableprefix . "fanfiction_stories` (
786 786
   `sid` int(11) NOT NULL auto_increment,
787
-  `title` varchar(200) NOT NULL default 'Untitled',
788
-  `summary` text NULL,
787
+  `title` varchar(200) NOT NULL default 'Untitled' COLLATE utf8mb4_unicode_ci,
788
+  `summary` text NULL COLLATE utf8mb4_unicode_ci,
789 789
   `storynotes` text NULL,
790 790
   `catid` varchar(100) NOT NULL default '0',
791 791
   `classes` varchar(200) NOT NULL default '0',
... ...
@@ -814,7 +814,7 @@ CREATE TABLE IF NOT EXISTS `" . $tableprefix . "fanfiction_modules` (
814 814
   KEY `rr` (`rr`),
815 815
   KEY `validateduid` (`validated`,`uid`),
816 816
   KEY `recent` (`updated`,`validated`)
817
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;");
817
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;");
818 818
 				$output .= "<tr><td>" . $tableprefix . "fanfiction_stories</td><td align='center'>" . ($stories ? "<img src=\"../images/check.gif\">" : "<img src=\"../images/X.gif\">") . "</td></tr>";
819 819
 				$output .= "</table>";
820 820
 				$output .= write_message(_TABLEFAILED . "<br /><br /><a href='install.php?step=4'>" . _CONTINUE . "</a>");