Биллинговая система Nodeny

Главная категория => Nodeny Plus => Тема начата: SeMant от 12 Июля 2015, 10:41:25



Название: Field 'name' doesn't have a default value
Отправлено: SeMant от 12 Июля 2015, 10:41:25
 Умер сервер вместе с базой Настроили новый, восстановились с бэкапа. Абоненты работают всё нормально, а вот новых создать не могу. Выдаёт такое вот:
Код:
304 Db.pm::sql	Field 'name' doesn't have a default value 


Название: Re: Field 'name' doesn't have a default value
Отправлено: Efendy от 12 Июля 2015, 10:58:49
где именно выдает?


Название: Re: Field 'name' doesn't have a default value
Отправлено: SeMant от 12 Июля 2015, 11:15:01
где именно выдает?
После того, как Я выбираю группу и нажимаю Создать. Выводиться  Произошла временная ошибка. Попробуйте повторить запрос.


Название: Re: Field 'name' doesn't have a default value
Отправлено: Redmen от 12 Июля 2015, 11:33:38
ето нюанс нового мускуля


Название: Re: Field 'name' doesn't have a default value
Отправлено: Redmen от 12 Июля 2015, 11:34:16
http://nodeny.16mb.com/doku.php/nodeny/install/fastinstall#настройка_mysql (http://nodeny.16mb.com/doku.php/nodeny/install/fastinstall#настройка_mysql)


Название: Re: Field 'name' doesn't have a default value
Отправлено: SeMant от 12 Июля 2015, 12:01:49
ето нюанс нового мускуля

На всякий случай уточню. Т.е. это нормально и достаточно просто в my.cnf в секции mysqld добавить строку sql_mode=NO_ENGINE_SUBSTITUTION и всё заработает как положено.


Название: Re: Field 'name' doesn't have a default value
Отправлено: Redmen от 12 Июля 2015, 12:33:21
не добавить, а привести к виду!
у мускуля есть несколько файлов my.cnf
в одном из них ета строка есть
проверь /usr/local/my.cnf


Название: Re: Field 'name' doesn't have a default value
Отправлено: Redmen от 12 Июля 2015, 12:34:02
ну и естественно перезагрузи мускуль


Название: Re: Field 'name' doesn't have a default value
Отправлено: Redmen от 12 Июля 2015, 12:36:45
почитай для общего http://habrahabr.ru/post/116922/ (http://habrahabr.ru/post/116922/)


Название: Re: Field 'name' doesn't have a default value
Отправлено: Redmen от 12 Июля 2015, 12:37:46
и тут http://avz.org.ua/wp/2014/04/29/mysql-troubles-after-upgrade-to-5-6/ (http://avz.org.ua/wp/2014/04/29/mysql-troubles-after-upgrade-to-5-6/)


Название: Re: Field 'name' doesn't have a default value
Отправлено: SeMant от 12 Июля 2015, 13:31:49
не добавить, а привести к виду!
у мускуля есть несколько файлов my.cnf
в одном из них ета строка есть
проверь /usr/local/my.cnf
Спасибо


Название: Re: Field 'name' doesn't have a default value
Отправлено: Redmen от 12 Июля 2015, 13:33:44
Помогло?
На здоровье!


Название: Re: Field 'name' doesn't have a default value
Отправлено: Efendy от 13 Июля 2015, 15:35:38
В ревизию 332 добавил поддержку "строгого" режима mysql. Только необходимо выполнить в mysql:

Код:
ALTER TABLE users CHANGE `name` `name` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT '';
ALTER TABLE users CHANGE `contract_date` `contract_date` int(10) unsigned NOT NULL DEFAULT 0;
ALTER TABLE users CHANGE `cstate_time` `cstate_time` int(10) unsigned NOT NULL DEFAULT 0;
ALTER TABLE pays CHANGE `comment` `comment` varchar(8192) NOT NULL DEFAULT '';
ALTER TABLE admin CHANGE `passwd` `passwd` varchar(32) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL;
ALTER TABLE services CHANGE `category` `category` varchar(64) NOT NULL DEFAULT '';

также нужно в админке зайти в настройки дополнительных полей, пройтись по каждому полю и просто нажать кнопку "сохранить" ничего не меняя

P.S.  На всякий склучай сделайте бекап БД, хотя все должно пройти гладко, мало ли


Название: Re: Field 'name' doesn't have a default value
Отправлено: SeMant от 26 Августа 2015, 17:49:35
В ревизию 332 добавил поддержку "строгого" режима mysql. Только необходимо выполнить в mysql:

Код:
ALTER TABLE users CHANGE `name` `name` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT '';
ALTER TABLE users CHANGE `contract_date` `contract_date` int(10) unsigned NOT NULL DEFAULT 0;
ALTER TABLE users CHANGE `cstate_time` `cstate_time` int(10) unsigned NOT NULL DEFAULT 0;
ALTER TABLE pays CHANGE `comment` `comment` varchar(8192) NOT NULL DEFAULT '';
ALTER TABLE admin CHANGE `passwd` `passwd` varchar(32) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL;
ALTER TABLE services CHANGE `category` `category` varchar(64) NOT NULL DEFAULT '';

также нужно в админке зайти в настройки дополнительных полей, пройтись по каждому полю и просто нажать кнопку "сохранить" ничего не меняя

P.S.  На всякий склучай сделайте бекап БД, хотя все должно пройти гладко, мало ли
У меня сейчас 331-ая. Мне нужно будет при обновлении выполнять команды в mysql, если Я sql_mode привёл к виду NO_ENGINE_SUBSTITUTION? Или надо выполнить и всё вернуть назад?


Название: Re: Field 'name' doesn't have a default value
Отправлено: Efendy от 27 Августа 2015, 15:35:28
Эти команды только устанавливают значения по умолчанию для некоторый полей. Их можно выполнить на любой версии биллинга - ни к чему плохому не приведут


Название: Re: Field 'name' doesn't have a default value
Отправлено: sergey104 от 25 Января 2017, 15:48:26
после пересохранения доп полей, на двух из них вылезла ошибка SQL Error. В дебаге:

Specified key was too long; max key length is 767 bytes

{
  'param' => [],
  'sql' => 'ALTER TABLE `data0` CHANGE `_komentariy2` `_komentariy2` VARCHAR(1024) NOT NULL DEFAULT \'\''
};
 
 ALTER TABLE `data0` CHANGE `_komentariy2` `_komentariy2` VARCHAR(1024) NOT NULL DEFAULT ''


Название: Re: Field 'name' doesn't have a default value
Отправлено: sever от 26 Января 2017, 15:48:53
после пересохранения доп полей, на двух из них вылезла ошибка SQL Error. В дебаге:

Specified key was too long; max key length is 767 bytes

{
  'param' => [],
  'sql' => 'ALTER TABLE `data0` CHANGE `_komentariy2` `_komentariy2` VARCHAR(1024) NOT NULL DEFAULT \'\''
};
 
 ALTER TABLE `data0` CHANGE `_komentariy2` `_komentariy2` VARCHAR(1024) NOT NULL DEFAULT ''

Для начала
show create table data0;


Название: Re: Field 'name' doesn't have a default value
Отправлено: sergey104 от 26 Января 2017, 19:14:54
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| data0 | CREATE TABLE `data0` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `uid` int(10) unsigned NOT NULL,
  `_adr_street` varchar(255) NOT NULL DEFAULT '',
  `_adr_house` varchar(255) NOT NULL DEFAULT '',
  `_adr_room` varchar(255) NOT NULL DEFAULT '',
  `_adr_telefon` varchar(255) NOT NULL DEFAULT '',
  `_adr_telefon2` varchar(255) NOT NULL DEFAULT '',
  `_name_Switch` varchar(255) NOT NULL DEFAULT '',
  `_name_aggregation` varchar(255) NOT NULL DEFAULT '',
  `_port_Switch` varchar(255) NOT NULL DEFAULT '',
  `_komentariy` varchar(255) NOT NULL,
  `_name_odf` varchar(255) NOT NULL DEFAULT '',
  `_number_odf` varchar(255) NOT NULL DEFAULT '',
  `_komentariy2` varchar(255) NOT NULL DEFAULT '',
  `_modul` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `uid` (`uid`),
  KEY `_adr_street` (`_adr_street`),
  KEY `_adr_house` (`_adr_house`),
  KEY `_adr_room` (`_adr_room`),
  KEY `_adr_telefon` (`_adr_telefon`),
  KEY `_adr_telefon2` (`_adr_telefon2`),
  KEY `_name_Switch` (`_name_Switch`),
  KEY `_name_aggregation` (`_name_aggregation`),
  KEY `_port_Switch` (`_port_Switch`),
  KEY `_komentariy` (`_komentariy`),
  KEY `_name_odf` (`_name_odf`),
  KEY `_number_odf` (`_number_odf`),
  KEY `_komentariy2` (`_komentariy2`),
  KEY `_modul` (`_modul`)
) ENGINE=InnoDB AUTO_INCREMENT=1814 DEFAULT CHARSET=utf8 |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)


Название: Re: Field 'name' doesn't have a default value
Отправлено: Efendy от 26 Января 2017, 20:48:45
Как буду дома (через неделю) пофикшу - вероятно, это связано с изменениями в mysql


Название: Re: Field 'name' doesn't have a default value
Отправлено: Efendy от 02 Февраля 2017, 18:11:30
Нет. Не получится. В my.cnf добавь:

innodb_large_prefix=on


Название: Re: Field 'name' doesn't have a default value
Отправлено: k291 от 07 Февраля 2017, 13:11:33
При обновлении или переносе БД на более новую версию MySQL, может не получатся создавать новые учетные записи. Сразу после выбора группы и нажатия на кнопку "Сохранить", выдает сообщение "Произошла временная ошибка. Попробуйте повторить запрос.", а в debug`e ошибка "Field 'name' doesn't have a default value".
Как решить проблему в Ubuntu(во FreeBSD путь "/etc/my.cnf" может отличатся):
1)
Код:
nano /etc/my.cnf
В секции [mysqld] добавить:
Цитировать
innodb_large_prefix=on
sql_mode=NO_ENGINE_SUBSTITUTION

Перезагружаем MySql:
Код:
/etc/init.d/mysql restart

2) Заходим в MySql:
Код:
mysql -u root --password='hardpass'
use nodeny;

Проверим, принял ли MySQL правки в п.1(ищем "NO_ENGINE_SUBSTITUTION"):
Код:
SHOW global variables LIKE 'sql_mode';

Заходим в БД:
Код:
use nodeny;

Выполняем(у меня проблема решилась после выполнения первых 3-х строк):
Код:
ALTER TABLE users CHANGE `name` `name` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT '';
ALTER TABLE users CHANGE `contract_date` `contract_date` int(10) unsigned NOT NULL DEFAULT 0;
ALTER TABLE users CHANGE `cstate_time` `cstate_time` int(10) unsigned NOT NULL DEFAULT 0;
ALTER TABLE pays CHANGE `comment` `comment` varchar(8192) NOT NULL DEFAULT '';
ALTER TABLE admin CHANGE `passwd` `passwd` varchar(32) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL;
ALTER TABLE services CHANGE `category` `category` varchar(64) NOT NULL DEFAULT '';

3)В билинге в настройках, пройти по всем Доп.полям и просто нажать "Сохранить"


Название: Re: Field 'name' doesn't have a default value
Отправлено: sergey104 от 15 Февраля 2017, 17:09:33
вышеперечисленное не помогло. На форуме mysql в теме forums.mysql.com/read.php?22,613571,613571#msg-613571 есть по этому поводу следующее:
dev.mysql.com/doc/refman/5.6/en/innodb-row-format-specification.html
Возможно нужно изменить ROW_FORMAT на dynamic?


Название: Re: Field 'name' doesn't have a default value
Отправлено: sever от 01 Марта 2017, 16:44:20
после пересохранения доп полей, на двух из них вылезла ошибка SQL Error. В дебаге:

Specified key was too long; max key length is 767 bytes

{
  'param' => [],
  'sql' => 'ALTER TABLE `data0` CHANGE `_komentariy2` `_komentariy2` VARCHAR(1024) NOT NULL DEFAULT \'\''
};
 
 ALTER TABLE `data0` CHANGE `_komentariy2` `_komentariy2` VARCHAR(1024) NOT NULL DEFAULT ''

Как вариант
Создай новое поле _komentariy2_new  и импортни туда данные из _komentraiy2
Потом прибьёшь ненужное