Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
mysql максимальный размер строки/ячейки таблицы
 
mysql 4.0, нужно загружать в столбец большой объем данных. (порядка 1 Мб).
Пробовал информацию заносить в БД и напрямую
update ... col='blablabla.........'
и через файл
update ... col=load_file('/tmp/tempfile');
в обоих случаях в столбец помещается примерно 64 Килобайт текста, остаьлное обрезается.
Пробовал менять max_allowed_packet в my.ini, но никакого результата не добился...
 
вопрос снимается.
The maximum size of a row in a MyISAM table is 65,534 bytes.
сделаю INNODB
 
И вопрос вновь открывается :(
с INNODB ситуация аналогичная...
имею аналогичную ситуацию с mysqld 5.0.24a
Код
mysql> create table t1 (b text) engine=innodb;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t1 set b=load_file('/tmp/1');
Query OK, 1 row affected, 1 warning (0.02 sec)

mysql> select b from t1 into outfile '/tmp/2';
Query OK, 1 row affected (0.01 sec)

mysql> show variables like 'max_al%';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 52427776 | 
+--------------------+----------+
1 row in set (0.00 sec)

mysql> select length(b) from t1;
+-----------+
| length(b) |
+-----------+
|     65535 | 
+-----------+
1 row in set (0.00 sec)



Изначально файл /tmp/1 имеет размер около 1 мегабайта.
файл /tmp/2 в результате имеет размер около 64 килобайт...
 
кажется нашел в чем дело...
Код
mysql> create table t3( a int) engine=[b]innodb[/b];
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> show create table t3;
+-------+---------------------------------------------------------------------------------------+
| Table | Create Table                                                                          |
+-------+---------------------------------------------------------------------------------------+
| t3    | CREATE TABLE `t3` (
  `a` int(11) default NULL
) ENGINE=[b]MyISAM[/b] DEFAULT CHARSET=latin1 | 
+-------+---------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> alter table t3 type=[b]innodb[/b];
Query OK, 0 rows affected, 2 warnings (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table t3;
+-------+---------------------------------------------------------------------------------------+
| Table | Create Table                                                                          |
+-------+---------------------------------------------------------------------------------------+
| t3    | CREATE TABLE `t3` (
  `a` int(11) default NULL
) ENGINE=[b]MyISAM[/b] DEFAULT CHARSET=latin1 | 
+-------+---------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> alter table t3 engine=[b]innodb[/b];
Query OK, 0 rows affected, 2 warnings (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table t3;
+-------+---------------------------------------------------------------------------------------+
| Table | Create Table                                                                          |
+-------+---------------------------------------------------------------------------------------+
| t3    | CREATE TABLE `t3` (
  `a` int(11) default NULL
) ENGINE=[b]MyISAM[/b] DEFAULT CHARSET=latin1 | 
+-------+---------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

=======
И че за фигня.. почему не создаются (не изменяются) таблицы innodb..
в my.ini innoDB настроено, файл ibdata создан и инициилизирован.
логи чистые....
 
mysql> show engine innodb status;
ERROR 1235 (42000): Cannot call SHOW INNODB STATUS because skip-innodb is defined

причем skip-innodb в my.cnf закомментирована...

где еще может быть установлено skip-innodb
mysql читает именно этот файл my.cnf, это я проверил...
 
innodb нашел почему не запускалась...
но...
Код
mysql> show create table t1;
+-------+-----------------------------------------------------------------------+
| Table | Create Table                                                          |
+-------+-----------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `b` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 
+-------+-----------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> delete from t1;
Query OK, 1 row affected (0.01 sec)

mysql> insert into t1 set b=load_file('/tmp/2');
Query OK, 1 row affected, 1 warning (0.20 sec)

mysql> select length(b) from t1;
+-----------+
| length(b) |
+-----------+
|     65535 | 
+-----------+
1 row in set (0.01 sec)

при этом /tmp/2 имеет размер около  1Мб
В общем опять все свелось к первому вопросу..
 
и опять нашел..
вместо text следует использолвать LONGTEXT
Страницы: 1
Читают тему