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

  • cadch

  • Just popping in

  • Posts: 55

  • 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:
le="color: #000000"><?php CREATE TABLE log ( lid mediumint(8) unsigned NOT NULL auto_increment, uid mediumint(8) unsigned NOT NULL default 0, ip varchar(255) NOT NULL default '0.0.0.0', type varchar(255) NOT NULL default '', agent varchar(255) NOT 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(255) NOT NULL default '0.0.0.0', request_uri varchar(255) NOT NULL default '', malicious_actions varchar(255) NOT NULL default '', expire int NOT NULL default 0, KEY (ip), KEY (request_uri), KEY (malicious_actions), KEY (expire) ) ENGINE=MyISAM;

EDIT:
le="color: #000000"><?php CREATE TABLE log ( lid mediumint(8) unsigned NOT NULL auto_increment, uid mediumint(8) unsigned NOT NULL default 0, ip varchar(128) NOT NULL default '0.0.0.0', type varchar(250) NOT NULL default '', agent varchar(255) NOT 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(128) NOT NULL default '0.0.0.0', request_uri varchar(250) NOT NULL default '', malicious_actions varchar(250) NOT NULL default '', expire int NOT NULL default 0, KEY (ip), KEY (request_uri), KEY (malicious_actions), KEY (expire) ) ENGINE=MyISAM;

OR:(use utf8mb3)
le="color: #000000"><?php CREATE TABLE log ( lid mediumint(8) unsigned NOT NULL auto_increment, uid mediumint(8) unsigned NOT NULL default 0, ip varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL default '0.0.0.0', type varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL default '', agent varchar(255) NOT 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(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL default '0.0.0.0', request_uri varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL default '', malicious_actions varchar(255) CHARACTER 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: 55

  • Since: 2007/12/17


OR SET KEY LENGTH:
le="color: #000000"><?php CREATE TABLE log ( lid mediumint(8) unsigned NOT NULL auto_increment, uid mediumint(8) unsigned NOT NULL default 0, ip varchar(255) NOT NULL default '0.0.0.0', type varchar(255) NOT NULL default '', agent varchar(255) NOT 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(255) NOT NULL default '0.0.0.0', request_uri varchar(255) NOT NULL default '', malicious_actions varchar(255) NOT 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: 55

  • 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:

le="color: #000000"><?php CREATE TABLE log ( lid mediumint(8) unsigned NOT NULL auto_increment, uid mediumint(8) unsigned NOT NULL default 0, ip varchar(255) NOT NULL default '0.0.0.0', type varchar(255) NOT NULL default '', agent varchar(255) NOT 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(255) NOT NULL default '0.0.0.0', request_uri varchar(255) NOT NULL default '', malicious_actions varchar(255) NOT 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.

le="color: #000000"><?php CREATE TABLE log ( lid mediumint(8) unsigned NOT NULL auto_increment, uid mediumint(8) unsigned NOT NULL default 0, ip varchar(255) NOT NULL default '0.0.0.0', type varchar(255) NOT NULL default '', agent varchar(255) NOT 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(255) NOT NULL default '0.0.0.0', request_uri varchar(255) NOT NULL default '', malicious_actions varchar(255) NOT NULL default '', expire int NOT NULL default 0, KEY (ip(50)), KEY (request_uri(192)), KEY (malicious_actions(128)), KEY (expire) ) ENGINE=MyISAM;

Login

Donat-O-Meter

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

Latest GitHub Commits