MySQL: column size limit

I am currently working on Windows, and I have installed the MySQL 5.6.30 community server, and everything is fine. I have a script that initializes the database and again, everything works fine.

Now I'm trying to run this script on a Linux environment - the same version of MySQL, and I get the following error:

ERROR 1074 (42000) in row 3: column length is too long for the 'txt' column (max = 21845); use BLOB or TEXT instead

Script -

DROP TABLE IF EXISTS text;
CREATE TABLE `texts` (
  `id` BINARY(16) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
  `txt` VARCHAR(50000) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

Obviously there is some MySQL server configuration in my Windows OS that I need to replicate to Linux; can anyone share ideas?

Update 1

it also works on AWS RDS, and I'm sure it is just a service on top of Linux, so obviously this is just a configuration problem.

, varchar 50k UTF8?. TEXT MEDIUMTEXT - , varchar ()

2

, , , , varchar (50k) , linux - . Btw, im, charcter set UTF8 utf8_general_ci.

, SQL_MODE, STRICT_TRANS_TABLES .

+4
4

, txt

DROP TABLE IF EXISTS text;
CREATE TABLE `texts` (
  `id` BINARY(16) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
  `txt` TEXT DEFAULT NULL,
   PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
+1

:

InnoDB 65535 MySQL 65 535 :

mysql> CREATE TABLE t (a VARCHAR(8000), b VARCHAR(10000),
    -> c VARCHAR(10000), d VARCHAR(10000), e VARCHAR(10000),
    -> f VARCHAR(10000), g VARCHAR(10000)) ENGINE=InnoDB;

1118 (42000): . , BLOB, 65535. TEXT BLOB

( , , , .)

utf8 1, 2 3 . , , 65,535 ( MySQL), 21 845 (21,845 * 3 = 65,535).

, , , Windows , . , Linux . 21 845 .

, . "" . :

  • TEXT.
  • (, , ).
  • .
+1

utf8 3 . utf8mb4: 4; latin1:1; ascii: 1; .. VARCHAR(N) 1 2 . N ( ). , , utf8, 3 * N 65535, 2 .

, , VARCHAR 255.

txt , ascii , CHARACTER SET latin1.

InnoDB, "" ( varchars, , ..), . , , 8000 .

50K utf8, MEDIUMTEXT - , . 3 16 (5 , , utf8 - ).

(?) ascii (1 ), utf8mb4 (1-4 ). , Emoji 4- , utf8 .

, Windows Linux - , . ? http://bugs.mysql.com. ( .)

+1

varchar - ! - :

CREATE TABLE `texts` (
  `id` BINARY(16) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
  `txt` VARCHAR(20000) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

CREATE TABLE `texts2` (
  `id` BINARY(16) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
  `txt` VARCHAR(20000) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

CREATE TABLE `texts3` (
  `id` BINARY(16) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
  `txt` VARCHAR(10000) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

50000 . . , 3 select, 50000 .

.

, , , .

, .

.

.

0
source

All Articles