fix: enable real utf-8 for mysql database
source: https://mathiasbynens.be/notes/mysql-utf8mb4
This commit is contained in:
parent
f27a4cf5ac
commit
313833ecce
3 changed files with 177 additions and 71 deletions
|
@ -15,7 +15,7 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
antville.url = jdbc:mysql://localhost/antville?useUnicode=true&characterEncoding=utf8
|
||||
antville.url = jdbc:mysql://localhost/antville?useUnicode=true
|
||||
antville.driver = com.mysql.jdbc.Driver
|
||||
antville.user = antville
|
||||
antville.password = antville
|
||||
|
|
104
db/my.sql
104
db/my.sql
|
@ -15,8 +15,8 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
create database if not exists antville character set latin1
|
||||
collate latin1_general_ci;
|
||||
create database if not exists antville character set utf8mb4
|
||||
collate utf8mb4_unicode_ci;
|
||||
|
||||
use antville;
|
||||
|
||||
|
@ -27,15 +27,14 @@ set foreign_key_checks = 0;
|
|||
|
||||
create table account (
|
||||
id int(10) unsigned not null default '0',
|
||||
name varchar(255) character set utf8 collate utf8_general_ci,
|
||||
metadata mediumtext,
|
||||
email varchar(255) character set utf8 collate utf8_general_ci,
|
||||
status varchar(20),
|
||||
name varchar(500),
|
||||
email varchar(500),
|
||||
status varchar(50),
|
||||
created datetime,
|
||||
modified datetime,
|
||||
primary key (id),
|
||||
key name (name(20)),
|
||||
key email (email(20)),
|
||||
key name (name(191)),
|
||||
key email (email(191)),
|
||||
key status (status),
|
||||
key created (created),
|
||||
key modified (modified)
|
||||
|
@ -44,7 +43,7 @@ create table account (
|
|||
create table choice (
|
||||
id int(10) unsigned not null default '0',
|
||||
poll_id int(10) unsigned,
|
||||
title text character set utf8 collate utf8_general_ci,
|
||||
title text,
|
||||
created datetime,
|
||||
modified datetime,
|
||||
primary key (id),
|
||||
|
@ -53,16 +52,15 @@ create table choice (
|
|||
|
||||
create table content (
|
||||
id int(10) unsigned not null default '0',
|
||||
prototype varchar(20),
|
||||
name varchar(255) character set utf8 collate utf8_general_ci,
|
||||
prototype varchar(50),
|
||||
name varchar(500),
|
||||
site_id int(10) unsigned,
|
||||
story_id int(10) unsigned,
|
||||
parent_id int(10) unsigned,
|
||||
parent_type varchar(20),
|
||||
metadata mediumtext,
|
||||
status varchar(20),
|
||||
mode varchar(20),
|
||||
comment_mode varchar(20),
|
||||
parent_type varchar(50),
|
||||
status varchar(50),
|
||||
mode varchar(50),
|
||||
comment_mode varchar(50),
|
||||
requests int(10) unsigned,
|
||||
created datetime,
|
||||
creator_id int(10) unsigned,
|
||||
|
@ -78,12 +76,11 @@ create table content (
|
|||
|
||||
create table file (
|
||||
id int(10) unsigned not null default '0',
|
||||
prototype varchar(20),
|
||||
name varchar(255) character set utf8 collate utf8_general_ci,
|
||||
prototype varchar(50),
|
||||
name varchar(500),
|
||||
site_id int(10) unsigned,
|
||||
parent_id int(10) unsigned,
|
||||
parent_type varchar(20),
|
||||
metadata mediumtext,
|
||||
parent_type varchar(50),
|
||||
requests int(10) unsigned,
|
||||
created datetime,
|
||||
creator_id int(10) unsigned,
|
||||
|
@ -91,31 +88,29 @@ create table file (
|
|||
modifier_id int(10) unsigned,
|
||||
primary key (id),
|
||||
key site_id (site_id),
|
||||
key name (name(20)),
|
||||
key name (name(191)),
|
||||
key creator_id (creator_id)
|
||||
);
|
||||
|
||||
create table image (
|
||||
id int(10) unsigned not null default '0',
|
||||
name varchar(255) character set utf8 collate utf8_general_ci,
|
||||
prototype varchar(20),
|
||||
name varchar(500),
|
||||
prototype varchar(50),
|
||||
parent_id int(10) unsigned,
|
||||
parent_type varchar(20),
|
||||
metadata mediumtext,
|
||||
parent_type varchar(50),
|
||||
created datetime,
|
||||
creator_id int(10) unsigned,
|
||||
modified datetime,
|
||||
modifier_id int(10) unsigned,
|
||||
primary key (id),
|
||||
key creator_id (creator_id),
|
||||
key type (name,prototype)
|
||||
key type (name(191), prototype)
|
||||
);
|
||||
|
||||
create table layout (
|
||||
id int(10) unsigned not null default '0',
|
||||
site_id int(10) unsigned,
|
||||
metadata mediumtext,
|
||||
mode varchar(20),
|
||||
mode varchar(50),
|
||||
created datetime,
|
||||
creator_id int(10) unsigned,
|
||||
modified datetime,
|
||||
|
@ -127,9 +122,9 @@ create table layout (
|
|||
create table log (
|
||||
id int(10) unsigned not null auto_increment,
|
||||
context_id int(10) unsigned,
|
||||
context_type varchar(20),
|
||||
context_type varchar(50),
|
||||
referrer text,
|
||||
action varchar(255) character set utf8 collate utf8_general_ci,
|
||||
action varchar(500),
|
||||
created datetime,
|
||||
creator_id int(10) unsigned,
|
||||
primary key (id)
|
||||
|
@ -137,9 +132,9 @@ create table log (
|
|||
|
||||
create table membership (
|
||||
id int(10) unsigned not null default '0',
|
||||
name varchar(255) character set utf8 collate utf8_general_ci,
|
||||
name varchar(500),
|
||||
site_id int(10) unsigned,
|
||||
role varchar(20),
|
||||
role varchar(50),
|
||||
created datetime,
|
||||
creator_id int(10) unsigned,
|
||||
modified datetime,
|
||||
|
@ -147,7 +142,7 @@ create table membership (
|
|||
primary key (id),
|
||||
key site_id (site_id),
|
||||
key creator_id (creator_id),
|
||||
key name (name(20))
|
||||
key name (name(191))
|
||||
);
|
||||
|
||||
#!helma <% #metadata %>
|
||||
|
@ -155,14 +150,14 @@ create table membership (
|
|||
create table metadata (
|
||||
id int(10) unsigned not null default '0',
|
||||
parent_id int(10) unsigned,
|
||||
parent_type varchar(20),
|
||||
name varchar(255) character set utf8 collate utf8_general_ci,
|
||||
value mediumtext character set utf8 collate utf8_general_ci,
|
||||
type varchar(255),
|
||||
parent_type varchar(50),
|
||||
name varchar(500),
|
||||
value mediumtext,
|
||||
type varchar(500),
|
||||
primary key (id),
|
||||
key parent (parent_type, parent_id),
|
||||
key name (name),
|
||||
key value (value(255))
|
||||
key name (name(191)),
|
||||
key value (value(191))
|
||||
);
|
||||
|
||||
#!helma <% #end_of_metadata %>
|
||||
|
@ -170,8 +165,8 @@ create table metadata (
|
|||
create table poll (
|
||||
id int(10) unsigned not null default '0',
|
||||
site_id int(10) unsigned,
|
||||
question text character set utf8 collate utf8_general_ci,
|
||||
status varchar(20),
|
||||
question text,
|
||||
status varchar(50),
|
||||
closed datetime,
|
||||
created datetime,
|
||||
creator_id int(10) unsigned,
|
||||
|
@ -184,24 +179,23 @@ create table poll (
|
|||
|
||||
create table site (
|
||||
id int(10) unsigned not null default '0',
|
||||
name varchar(255) character set utf8 collate utf8_general_ci,
|
||||
name varchar(500),
|
||||
layout_id int(10) unsigned,
|
||||
metadata mediumtext,
|
||||
status varchar(20),
|
||||
mode varchar(20),
|
||||
status varchar(50),
|
||||
mode varchar(50),
|
||||
created datetime,
|
||||
creator_id int(10) unsigned,
|
||||
modified datetime,
|
||||
modifier_id int(10) unsigned,
|
||||
primary key (id),
|
||||
key name (name(20)),
|
||||
key name (name(191)),
|
||||
key creator_id (creator_id)
|
||||
);
|
||||
|
||||
create table skin (
|
||||
id int(10) unsigned not null default '0',
|
||||
name varchar(255) character set utf8 collate utf8_general_ci,
|
||||
prototype varchar(30),
|
||||
name varchar(500),
|
||||
prototype varchar(50),
|
||||
source mediumtext,
|
||||
layout_id int(10) unsigned,
|
||||
created datetime,
|
||||
|
@ -209,23 +203,23 @@ create table skin (
|
|||
modified datetime,
|
||||
modifier_id int(10) unsigned,
|
||||
primary key (id),
|
||||
key type (layout_id,prototype(10),name(10))
|
||||
key type (layout_id, prototype, name(191))
|
||||
);
|
||||
|
||||
create table tag (
|
||||
id int(10) unsigned not null default '0',
|
||||
name varchar(255) character set utf8 collate utf8_general_ci,
|
||||
name varchar(500),
|
||||
site_id int(10) unsigned,
|
||||
type varchar(20),
|
||||
type varchar(50),
|
||||
primary key (id),
|
||||
key tags (site_id,type,name)
|
||||
key tags (site_id, type, name(191))
|
||||
);
|
||||
|
||||
create table tag_hub (
|
||||
id int(10) unsigned not null default '0',
|
||||
tag_id int(10) unsigned,
|
||||
tagged_id int(10) unsigned,
|
||||
tagged_type varchar(20),
|
||||
tagged_type varchar(50),
|
||||
primary key (id),
|
||||
key tagged (tag_id, tagged_type, tagged_id)
|
||||
);
|
||||
|
@ -234,7 +228,7 @@ create table vote (
|
|||
id int(10) unsigned not null default '0',
|
||||
poll_id int(10) unsigned,
|
||||
choice_id int(10) unsigned,
|
||||
creator_name varchar(255) character set utf8 collate utf8_general_ci,
|
||||
creator_name varchar(500),
|
||||
created datetime,
|
||||
creator_id int(10) unsigned,
|
||||
modified datetime,
|
||||
|
@ -242,7 +236,7 @@ create table vote (
|
|||
key poll_id (poll_id),
|
||||
key creator_id (creator_id),
|
||||
key choice_id (choice_id),
|
||||
key creator_name (creator_name(20))
|
||||
key creator_name (creator_name(191))
|
||||
);
|
||||
|
||||
set foreign_key_checks = 1;
|
||||
|
|
112
extra/updater/patch-20160709.js
Normal file
112
extra/updater/patch-20160709.js
Normal file
|
@ -0,0 +1,112 @@
|
|||
// The Antville Project
|
||||
// http://code.google.com/p/antville
|
||||
//
|
||||
// Copyright 2001–2016 by the Workers of Antville.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the ``License'');
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an ``AS IS'' BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
// Apply with enabled updater repository using `ant patch -Dpatch.id=20160709`
|
||||
var sql = new Sql();
|
||||
var template;
|
||||
|
||||
sql.execute('alter database antville character set utf8mb4 collate utf8mb4_unicode_ci;');
|
||||
|
||||
template = 'alter table $0 convert to character set utf8mb4 collate utf8mb4_unicode_ci';
|
||||
|
||||
sql.execute(template, 'account');
|
||||
sql.execute(template, 'choice');
|
||||
sql.execute(template, 'content');
|
||||
sql.execute(template, 'file');
|
||||
sql.execute(template, 'image');
|
||||
sql.execute(template, 'layout');
|
||||
sql.execute(template, 'log');
|
||||
sql.execute(template, 'membership');
|
||||
sql.execute(template, 'metadata');
|
||||
sql.execute(template, 'poll');
|
||||
sql.execute(template, 'site');
|
||||
sql.execute(template, 'skin');
|
||||
sql.execute(template, 'tag');
|
||||
sql.execute(template, 'tag_hub');
|
||||
sql.execute(template, 'vote');
|
||||
|
||||
template = 'alter table $0 change $1 $1 $2 character set utf8mb4 collate utf8mb4_unicode_ci;'
|
||||
|
||||
sql.execute(template, 'account', 'name', 'varchar(500)');
|
||||
sql.execute(template, 'account', 'email', 'varchar(500)');
|
||||
sql.execute(template, 'account', 'status', 'varchar(50)');
|
||||
sql.execute("alter table account drop key name;");
|
||||
sql.execute("alter table account add key name (name(191));");
|
||||
sql.execute("alter table account drop key email;");
|
||||
sql.execute("alter table account add key email (email(191));");
|
||||
|
||||
sql.execute(template, 'choice', 'title', 'text');
|
||||
|
||||
sql.execute(template, 'content', 'prototype', 'varchar(50)');
|
||||
sql.execute(template, 'content', 'name', 'name', 'varchar(500)');
|
||||
sql.execute(template, 'content', 'parent_type', 'varchar(50)');
|
||||
sql.execute(template, 'content', 'status', 'varchar(50)');
|
||||
sql.execute(template, 'content', 'mode', 'varchar(50)');
|
||||
sql.execute(template, 'content', 'comment_mode', 'varchar(50)');
|
||||
|
||||
sql.execute(template, 'file', 'prototype', 'varchar(50)');
|
||||
sql.execute(template, 'file', 'name', 'varchar(500)');
|
||||
sql.execute(template, 'file', 'parent_type', 'varchar(50)');
|
||||
sql.execute("alter table file drop key name;");
|
||||
sql.execute("alter table file add key name (name(191));");
|
||||
|
||||
sql.execute(template, 'image', 'name', 'varchar(500)');
|
||||
sql.execute(template, 'image', 'prototype', 'varchar(50)');
|
||||
sql.execute(template, 'image', 'parent_type', 'varchar(50)');
|
||||
sql.execute("alter table image drop key type;");
|
||||
sql.execute("alter table image add key type (name(191), prototype);");
|
||||
|
||||
sql.execute(template, 'layout', 'mode', 'varchar(50)');
|
||||
|
||||
sql.execute(template, 'log', 'context_type', 'varchar(50)');
|
||||
sql.execute(template, 'log', 'action', 'varchar(500)');
|
||||
|
||||
sql.execute(template, 'membership', 'name', 'varchar(500)');
|
||||
sql.execute(template, 'membership', 'role', 'varchar(50)');
|
||||
sql.execute("alter table membership drop key name;");
|
||||
sql.execute("alter table membership add key name (name(191));");
|
||||
|
||||
sql.execute(template, 'metadata', 'parent_type', 'varchar(50)');
|
||||
sql.execute(template, 'metadata', 'name', 'varchar(500)');
|
||||
sql.execute(template, 'metadata', 'value', 'mediumtext');
|
||||
sql.execute("alter table metadata drop key name;");
|
||||
sql.execute("alter table metadata add key name (name(191));");
|
||||
sql.execute("alter table metadata drop key value;");
|
||||
sql.execute("alter table metadata add key value (value(191));");
|
||||
|
||||
sql.execute(template, 'poll', 'question', 'text');
|
||||
sql.execute(template, 'poll', 'status', 'varchar(50)');
|
||||
|
||||
sql.execute(template, 'site', 'name', 'varchar(500)');
|
||||
sql.execute(template, 'site', 'status', 'varchar(50)');
|
||||
sql.execute(template, 'site', 'mode', 'varchar(50)');
|
||||
sql.execute("alter table site drop key name;");
|
||||
sql.execute("alter table site add key name (name(191));");
|
||||
|
||||
sql.execute(template, 'skin', 'name', 'varchar(500)');
|
||||
sql.execute(template, 'skin', 'prototype', 'varchar(50)');
|
||||
sql.execute("alter table skin drop key type;");
|
||||
sql.execute("alter table skin add key type (layout_id, prototype, name(191));");
|
||||
|
||||
sql.execute(template, 'tag', 'name', 'varchar(500)');
|
||||
sql.execute(template, 'tag', 'type', 'varchar(50)');
|
||||
|
||||
sql.execute(template, 'tag_hub', 'tagged_type', 'varchar(50)');
|
||||
|
||||
sql.execute(template, 'vote', 'creator_name', 'varchar(500)');
|
||||
sql.execute("alter table vote drop key creator_name;");
|
||||
sql.execute("alter table vote add key creator_name (creator_name(191));");
|
Loading…
Add table
Reference in a new issue