Skip to content

Commit

Permalink
specify a default table collation / charset for MySQL - might help fix
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidGoodwin committed Feb 11, 2020
1 parent cabd97f commit 80a0faa
Showing 1 changed file with 22 additions and 18 deletions.
40 changes: 22 additions & 18 deletions public/upgrade.php
Expand Up @@ -259,6 +259,8 @@ function db_query_parsed($sql, $ignore_errors = 0, $attach_mysql = "") {
'{DATE}' => "timestamp NOT NULL default '2000-01-01'", # MySQL needs a sane default (no default is interpreted as CURRENT_TIMESTAMP, which is ...
'{DATEFUTURE}' => "timestamp NOT NULL default '2038-01-18'", # different default timestamp for vacation.activeuntil
'{DATECURRENT}' => 'timestamp NOT NULL default CURRENT_TIMESTAMP', # only allowed once per table in MySQL
'{COLLATE}' => "CHARACTER SET latin1 COLLATE latin1_general_ci", # just incase someone has a unicode collation set.

);
$sql = "$sql $attach_mysql";
} elseif (db_sqlite()) {
Expand All @@ -281,6 +283,7 @@ function db_query_parsed($sql, $ignore_errors = 0, $attach_mysql = "") {
'{DATE}' => "datetime NOT NULL default '2000-01-01'",
'{DATEFUTURE}' => "datetime NOT NULL default '2038-01-18'", # different default timestamp for vacation.activeuntil
'{DATECURRENT}' => 'datetime NOT NULL default CURRENT_TIMESTAMP',
'{COLLATE}' => ''
);
} elseif ($CONF['database_type'] == 'pgsql') {
$replace = array(
Expand All @@ -305,6 +308,7 @@ function db_query_parsed($sql, $ignore_errors = 0, $attach_mysql = "") {
'{DATE}' => "timestamp with time zone default '2000-01-01'", # stay in sync with MySQL
'{DATEFUTURE}' => "timestamp with time zone default '2038-01-18'", # stay in sync with MySQL
'{DATECURRENT}' => 'timestamp with time zone default now()',
'{COLLATE}' => '',
);
} else {
echo_out("Sorry, unsupported database type " . $CONF['database_type']);
Expand Down Expand Up @@ -401,7 +405,7 @@ function upgrade_1_mysql() {
`modified` {DATETIME},
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`username`)
) COMMENT='Postfix Admin - Virtual Admins';";
) {COLLATE} COMMENT='Postfix Admin - Virtual Admins';";

$sql[] = "
CREATE TABLE {IF_NOT_EXISTS} $alias (
Expand All @@ -412,7 +416,7 @@ function upgrade_1_mysql() {
`modified` {DATETIME},
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`address`)
) COMMENT='Postfix Admin - Virtual Aliases'; ";
) {COLLATE} COMMENT='Postfix Admin - Virtual Aliases'; ";

$sql[] = "
CREATE TABLE {IF_NOT_EXISTS} $domain (
Expand All @@ -428,7 +432,7 @@ function upgrade_1_mysql() {
`modified` {DATETIME},
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`domain`)
) COMMENT='Postfix Admin - Virtual Domains'; ";
) {COLLATE} COMMENT='Postfix Admin - Virtual Domains'; ";

$sql[] = "
CREATE TABLE {IF_NOT_EXISTS} $domain_admins (
Expand All @@ -437,7 +441,7 @@ function upgrade_1_mysql() {
`created` {DATETIME},
`active` tinyint(1) NOT NULL default '1',
KEY username (`username`)
) COMMENT='Postfix Admin - Domain Admins';";
) {COLLATE} COMMENT='Postfix Admin - Domain Admins';";

$sql[] = "
CREATE TABLE {IF_NOT_EXISTS} $log (
Expand All @@ -447,7 +451,7 @@ function upgrade_1_mysql() {
`action` varchar(255) NOT NULL default '',
`data` varchar(255) NOT NULL default '',
KEY timestamp (`timestamp`)
) COMMENT='Postfix Admin - Log';";
) {COLLATE} COMMENT='Postfix Admin - Log';";

$sql[] = "
CREATE TABLE {IF_NOT_EXISTS} $mailbox (
Expand All @@ -461,7 +465,7 @@ function upgrade_1_mysql() {
`modified` {DATETIME},
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`username`)
) COMMENT='Postfix Admin - Virtual Mailboxes';";
) {COLLATE} COMMENT='Postfix Admin - Virtual Mailboxes';";

$sql[] = "
CREATE TABLE {IF_NOT_EXISTS} $vacation (
Expand All @@ -474,7 +478,7 @@ function upgrade_1_mysql() {
active tinyint(4) NOT NULL default '1',
PRIMARY KEY (email),
KEY email (email)
) {INNODB} DEFAULT CHARSET=latin1 COMMENT='Postfix Admin - Virtual Vacation' ;";
) {INNODB} {COLLATE} COMMENT='Postfix Admin - Virtual Vacation' ;";

foreach ($sql as $query) {
db_query_parsed($query);
Expand Down Expand Up @@ -814,7 +818,7 @@ function upgrade_5_mysql() {
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`username`),
KEY username (`username`)
) DEFAULT {LATIN1} COMMENT='Postfix Admin - Virtual Admins'; ");
) {COLLATE} COMMENT='Postfix Admin - Virtual Admins'; ");

db_query_parsed("
CREATE TABLE {IF_NOT_EXISTS} " . table_by_key('alias') . " (
Expand All @@ -826,7 +830,7 @@ function upgrade_5_mysql() {
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`address`),
KEY address (`address`)
) DEFAULT {LATIN1} COMMENT='Postfix Admin - Virtual Aliases';
) {COLLATE} COMMENT='Postfix Admin - Virtual Aliases';
");

db_query_parsed("
Expand All @@ -844,7 +848,7 @@ function upgrade_5_mysql() {
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`domain`),
KEY domain (`domain`)
) DEFAULT {LATIN1} COMMENT='Postfix Admin - Virtual Domains';
) {COLLATE} COMMENT='Postfix Admin - Virtual Domains';
");

db_query_parsed("
Expand All @@ -854,7 +858,7 @@ function upgrade_5_mysql() {
`created` {DATETIME},
`active` tinyint(1) NOT NULL default '1',
KEY username (`username`)
) DEFAULT {LATIN1} COMMENT='Postfix Admin - Domain Admins';
) {COLLATE} COMMENT='Postfix Admin - Domain Admins';
");

db_query_parsed("
Expand All @@ -865,7 +869,7 @@ function upgrade_5_mysql() {
`action` varchar(255) NOT NULL default '',
`data` varchar(255) NOT NULL default '',
KEY timestamp (`timestamp`)
) DEFAULT {LATIN1} COMMENT='Postfix Admin - Log';
) {COLLATE} COMMENT='Postfix Admin - Log';
");

db_query_parsed("
Expand All @@ -880,8 +884,8 @@ function upgrade_5_mysql() {
`modified` {DATETIME},
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`username`),
KEY username (`username`)
) DEFAULT {LATIN1} COMMENT='Postfix Admin - Virtual Mailboxes';
KEY username (`username`)
) {COLLATE} COMMENT='Postfix Admin - Virtual Mailboxes';
");

db_query_parsed("
Expand All @@ -895,7 +899,7 @@ function upgrade_5_mysql() {
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`email`),
KEY email (`email`)
) DEFAULT {LATIN1} COMMENT='Postfix Admin - Virtual Vacation';
) {COLLATE} COMMENT='Postfix Admin - Virtual Vacation';
");
}

Expand Down Expand Up @@ -975,7 +979,7 @@ function upgrade_318_mysql() {
CONSTRAINT `vacation_notification_pkey`
FOREIGN KEY (`on_vacation`) REFERENCES $table_vacation(`email`) ON DELETE CASCADE
)
DEFAULT {LATIN1}
{COLLATE}
COMMENT='Postfix Admin - Virtual Vacation Notifications'
");

Expand Down Expand Up @@ -1083,7 +1087,7 @@ function upgrade_438_mysql() {
PRIMARY KEY (`alias_domain`),
KEY `active` (`active`),
KEY `target_domain` (`target_domain`)
) COMMENT='Postfix Admin - Domain Aliases'
) {COLLATE} COMMENT='Postfix Admin - Domain Aliases'
");
}

Expand Down Expand Up @@ -1361,7 +1365,7 @@ function upgrade_729_mysql_pgsql() {
path VARCHAR(100) {LATIN1} NOT NULL,
current {BIGINT},
PRIMARY KEY (username, path)
) ;
) {COLLATE} ;
");

# table for dovecot >= 1.2
Expand Down

0 comments on commit 80a0faa

Please sign in to comment.