1
cadch
where utf8mb4 protector table can not creat
  • 2021/12/4 10:47

  • cadch

  • Just popping in

  • Posts: 48

  • Since: 2007/12/17


where mysql CHARACTER SET utf8mb4 have some errorQuote:
Creating tables...Specified key was too long; max key length is 1000 bytes

FILE:
Quote:
\htdocs\xoops_lib\modules\protector\sql\mysql.sql

CODE:
CREATE TABLE log (
  
lid mediumint(8unsigned NOT NULL auto_increment,
  
uid mediumint(8unsigned NOT NULL default 0,
  
ip varchar(255NOT NULL default '0.0.0.0',
  
type varchar(255NOT NULL default '',
  
agent varchar(255NOT NULL default '',
  
description text,
  
extra text,
  
timestamp DATETIME,
  
PRIMARY KEY (lid) ,
  
KEY (uid) ,
  
KEY (ip) ,
  
KEY (type) ,
  
KEY (timestamp)
ENGINE=MyISAM;

CREATE TABLE access (
  
ip varchar(255NOT NULL default '0.0.0.0',
  
request_uri varchar(255NOT NULL default '',
  
malicious_actions varchar(255NOT NULL default '',
  
expire int NOT NULL default 0,
  
KEY (ip),
  
KEY (request_uri),
  
KEY (malicious_actions),
  
KEY (expire)
ENGINE=MyISAM;

EDIT:
CREATE TABLE log (
  
lid mediumint(8unsigned NOT NULL auto_increment,
  
uid mediumint(8unsigned NOT NULL default 0,
  
ip varchar(128NOT NULL default '0.0.0.0',
  
type varchar(250NOT NULL default '',
  
agent varchar(255NOT NULL default '',
  
description text,
  
extra text,
  
timestamp DATETIME,
  
PRIMARY KEY (lid) ,
  
KEY (uid) ,
  
KEY (ip) ,
  
KEY (type) ,
  
KEY (timestamp)
ENGINE=MyISAM;

CREATE TABLE access (
  
ip varchar(128NOT NULL default '0.0.0.0',
  
request_uri varchar(250NOT NULL default '',
  
malicious_actions varchar(250NOT NULL default '',
  
expire int NOT NULL default 0,
  
KEY (ip),
  
KEY (request_uri),
  
KEY (malicious_actions),
  
KEY (expire)
ENGINE=MyISAM;

OR:(use utf8mb3)
CREATE TABLE log (
  
lid mediumint(8unsigned NOT NULL auto_increment,
  
uid mediumint(8unsigned NOT NULL default 0,
  
ip varchar(255CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL default '0.0.0.0',
  
type varchar(255CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL default '',
  
agent varchar(255NOT NULL default '',
  
description text,
  
extra text,
  
timestamp DATETIME,
  
PRIMARY KEY (lid) ,
  
KEY (uid) ,
  
KEY (ip) ,
  
KEY (type) ,
  
KEY (timestamp)
ENGINE=MyISAM;

CREATE TABLE access (
  
ip varchar(255CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL default '0.0.0.0',
  
request_uri varchar(255CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL default '',
  
malicious_actions varchar(255CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL default '',
  
expire int NOT NULL default 0,
  
KEY (ip),
  
KEY (request_uri),
  
KEY (malicious_actions),
  
KEY (expire)
ENGINE=MyISAM;

2
cadch
Re: where utf8mb4 protector table can not creat
  • 2021/12/4 15:50

  • cadch

  • Just popping in

  • Posts: 48

  • Since: 2007/12/17


OR SET KEY LENGTH:
CREATE TABLE log (
  
lid mediumint(8unsigned NOT NULL auto_increment,
  
uid mediumint(8unsigned NOT NULL default 0,
  
ip varchar(255NOT NULL default '0.0.0.0',
  
type varchar(255NOT NULL default '',
  
agent varchar(255NOT NULL default '',
  
description text,
  
extra text,
  
timestamp DATETIME,
  
PRIMARY KEY (lid) ,
  
KEY (uid) ,
  
KEY (ip(128)) ,
  
KEY (type(250)) ,
  
KEY (timestamp)
ENGINE=MyISAM;

CREATE TABLE access (
  
ip varchar(255NOT NULL default '0.0.0.0',
  
request_uri varchar(255NOT NULL default '',
  
malicious_actions varchar(255NOT NULL default '',
  
expire int NOT NULL default 0,
  
KEY (ip(128)),
  
KEY (request_uri(250)),
  
KEY (malicious_actions(250)),
  
KEY (expire)
ENGINE=MyISAM;

3
zyspec
Re: where utf8mb4 protector table can not creat
  • 2021/12/6 15:31

  • zyspec

  • Module Developer

  • Posts: 1095

  • Since: 2004/9/21


Can you tell us what version of MySQL you are using?

4
cadch
Re: where utf8mb4 protector table can not creat
  • 2021/12/9 13:13

  • cadch

  • Just popping in

  • Posts: 48

  • Since: 2007/12/17


mySQL 8.0.27-0

5
zyspec
Re: where utf8mb4 protector table can not creat
  • 2021/12/9 17:47

  • zyspec

  • Module Developer

  • Posts: 1095

  • Since: 2004/9/21


Thanks for the information.

As you stated above, the current code looks like:

CREATE TABLE log (
  
lid mediumint(8unsigned NOT NULL auto_increment,
  
uid mediumint(8unsigned NOT NULL default 0,
  
ip varchar(255NOT NULL default '0.0.0.0',
  
type varchar(255NOT NULL default '',
  
agent varchar(255NOT NULL default '',
  
description text,
  
extra text,
  
timestamp DATETIME,
  
PRIMARY KEY (lid) ,
  
KEY (uid) ,
  
KEY (ip) ,
  
KEY (type) ,
  
KEY (timestamp)
ENGINE=MyISAM;

CREATE TABLE access (
  
ip varchar(255NOT NULL default '0.0.0.0',
  
request_uri varchar(255NOT NULL default '',
  
malicious_actions varchar(255NOT NULL default '',
  
expire int NOT NULL default 0,
  
KEY (ip),
  
KEY (request_uri),
  
KEY (malicious_actions),
  
KEY (expire)
ENGINE=MyISAM;


Can you try the following to see if it resolves the issue you're seeing? As you have determined the keys are too long for MySQL 8. I've made some minor changes to what you've found to attempt to minimize the length of keys where appropriate to cover a majority of the cases. Unfortunately it's difficult to set an exact key length for some of the keys since the length of data in those fields can vary quite a bit.

CREATE TABLE log (
  
lid mediumint(8unsigned NOT NULL auto_increment,
  
uid mediumint(8unsigned NOT NULL default 0,
  
ip varchar(255NOT NULL default '0.0.0.0',
  
type varchar(255NOT NULL default '',
  
agent varchar(255NOT NULL default '',
  
description text,
  
extra text,
  
timestamp DATETIME,
  
PRIMARY KEY (lid) ,
  
KEY (uid) ,
  
KEY (ip (50)) ,
  
KEY (type(64)) ,
  
KEY (timestamp)
ENGINE=MyISAM;

CREATE TABLE access (
  
ip varchar(255NOT NULL default '0.0.0.0',
  
request_uri varchar(255NOT NULL default '',
  
malicious_actions varchar(255NOT NULL default '',
  
expire int NOT NULL default 0,
  
KEY (ip(50)),
  
KEY (request_uri(192)),
  
KEY (malicious_actions(128)),
  
KEY (expire)
ENGINE=MyISAM;

Login

Who's Online

201 user(s) are online (57 user(s) are browsing Support Forums)


Members: 0


Guests: 201


more...

Donat-O-Meter

Stats
Goal: $100.00
Due Date: Mar 31
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00
Make donations with PayPal!

Latest GitHub Commits