Всем привет. На данный момент есть БД на удаленном хостинге. Написано с десяток разной сложности проектов работающих с данной БД.
Вот ее характеристики:
Сервер баз данных
Сервер: Localhost via UNIX socket
Тип сервера: Percona Server
Соединение сервера: SSL не используется Документация
Версия сервера: 5.7.27-30 - Percona Server (GPL), Release 30, Revision 8916819
Версия протокола: 10
Кодировка сервера: cp1252 West European (latin1)
Хостер начал ругаться и присылать гневные письма из-за превышения допустимой нагрузки и грозиться заблокировать доступ.
Есть потребность перенести БД на локальную машину.
Установил на нее Open Server. Импортировал БД с хостинга. Тестово в PM успешно подключаюсь к локальной БД и делаю запросы.
При попытке запуска текущих проектов с новой БД получаю ошибки при попытке внесения или обновления строк.
Характеристики БД на Open Server:
Вот структура тестовой таблицы на Open Server:
Вот запрос, который пытаюсь выполнить:
Получаю ошибку:
#1366 - Incorrect integer value: '' for column `u1564826_new_base`.`test`.`test_int` at row 1
Ошибка эта связана, с тем, что я передаю пустые значения в столбцы test_text и test_int.
Приведенная таблица является лишь примером. Фактически переносимая таблица имеет десятки столбцов. И какая то часть столбцов может быть не заполнена.
Т.е. фактически в экшене присутствует столбец, но переменная пуста.
Например:
Вопрос: Какие настройки внести в структуру таблицы, чтобы запросы с пустыми значениями корректно вносились в таблицу? По умолчанию NULL установил, не помогло....
p.s. Есть конечно мысль перед добавлением строки каждую переменную проверять на пустоту и если она пуста, то присваивать какое то дефолтное значение, но кубиков и переменных много, что вероятно вызовет ошибки и необходимость долгой отладки. К тому же в таблице много строк. И она уже весит 700МБ. А если вместо пустоты передавать какое то дефолтное, то полагаю вес таблицы будет разрастаться еще быстрее.
Вот ее характеристики:
Сервер баз данных
Сервер: Localhost via UNIX socket
Тип сервера: Percona Server
Соединение сервера: SSL не используется Документация
Версия сервера: 5.7.27-30 - Percona Server (GPL), Release 30, Revision 8916819
Версия протокола: 10
Кодировка сервера: cp1252 West European (latin1)
Хостер начал ругаться и присылать гневные письма из-за превышения допустимой нагрузки и грозиться заблокировать доступ.
Есть потребность перенести БД на локальную машину.
Установил на нее Open Server. Импортировал БД с хостинга. Тестово в PM успешно подключаюсь к локальной БД и делаю запросы.
При попытке запуска текущих проектов с новой БД получаю ошибки при попытке внесения или обновления строк.
Характеристики БД на Open Server:
- Сервер: 127.0.0.1 via TCP/IP
- Тип сервера: MariaDB
- Соединение сервера: SSL не используется
- Версия сервера: 10.3.22-MariaDB - mariadb.org binary distribution
- Версия протокола: 10
- Пользователь: root@localhost
- Кодировка сервера: UTF-8 Unicode (utf8mb4)
Вот структура тестовой таблицы на Open Server:
Вот запрос, который пытаюсь выполнить:
PHP:
INSERT INTO `test`(`id`, `test_text`, `test_int`) VALUES (4,"","")
#1366 - Incorrect integer value: '' for column `u1564826_new_base`.`test`.`test_int` at row 1
Ошибка эта связана, с тем, что я передаю пустые значения в столбцы test_text и test_int.
Приведенная таблица является лишь примером. Фактически переносимая таблица имеет десятки столбцов. И какая то часть столбцов может быть не заполнена.
Т.е. фактически в экшене присутствует столбец, но переменная пуста.
Например:
PHP:
INSERT INTO `test`(`id`, `test_text`, `test_int`) VALUES (4,"{-Variable.test_text-}","{-Variable.test_int-}")
p.s. Есть конечно мысль перед добавлением строки каждую переменную проверять на пустоту и если она пуста, то присваивать какое то дефолтное значение, но кубиков и переменных много, что вероятно вызовет ошибки и необходимость долгой отладки. К тому же в таблице много строк. И она уже весит 700МБ. А если вместо пустоты передавать какое то дефолтное, то полагаю вес таблицы будет разрастаться еще быстрее.