Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Добавление информации в столбец
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Я в SQL новичок. В процессе изучения столкнулась с некоторыми неясностями, которые прошу разъяснить более опытных товарищей) 1) Осваивая оператор ALTER TABLE, добавила несколько колонок в существующую таблицу, в которой уже были заполненные поля. Пробовала разными способами внести инфу в нужную мне колонку, но не получается. Все время выдает ошибки. Нашла информацию о том, что подобный вариант возможен лишь в том случае, когда остальные столбцы допускают значение NULL, но у меня в этой таблице есть столбцы с primary key и они NULL не допускают. Что делать в таком случае? Ведь возможно же, что в уже заполненную таблицу необходимо добавить новую колонку и ее нужно заполнить, а из-за столбцов с ключами, это сделать невозможно. Как поступать в таком случае? 2) Опять же проблема с добавлениями колонок. Колонки добавила, но не получается поменять в них тип данных через CHANGE. В изначальных колонках все меняется, а в добавленных выдает ошибку. Как в процессе можно менять типы данных или это невозможно в MySQL? Спасибо заранее! Очень надеюсь на Ваши ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2017, 22:32 |
|
||
|
Добавление информации в столбец
|
|||
|---|---|---|---|
|
#18+
1. Почему это невозможно? Поле с primary key само по себе, добавляемое - само по себе. Можно определить для нового поля дефолтовое значение. После добавления поля можно устанавливать в него значения обычным UPDATE. Ну а вообще, показывайте структуру таблицы, проблемные запросы и тексты сообщений об ошибке. Иначе сложно что-то конкретное советовать. 2. Тоже странно. Тип данных поля в общем случае можно изменить безболезненно только в случае, когда данные удовлетворяют новому типу. В ряде случаев можно потерять данные при изменении типа, а иногда изменение и вовсе невозможно. Без конкретики, опять же, вряд ли можно что-то более внятное ответить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2017, 01:28 |
|
||
|
Добавление информации в столбец
|
|||
|---|---|---|---|
|
#18+
vkle, Спасибо огромное! С UPDATE все получилось. А вот с изменениями данных, как-то не очень. Не получается в добавленной колонке поменять на NOT NULL: mysql> ALTER TABLE persons -> CHANGE Date -> Date date NOT NULL; ERROR 1265 (01000): Data truncated for column 'Date' at row 2 mysql> EXPLAIN persons; +-----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+--------------+------+-----+---------+----------------+ | Number | int(11) | NO | PRI | NULL | auto_increment | | PersonID | varchar(30) | NO | PRI | NULL | | | LastName | varchar(255) | NO | | NULL | | | FirstName | varchar(50) | NO | | NULL | | | Email | varchar(255) | NO | | NULL | | | Address | varchar(255) | NO | | NULL | | | City | varchar(100) | NO | | NULL | | | Date | date | YES | | NULL | ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2017, 08:15 |
|
||
|
Добавление информации в столбец
|
|||
|---|---|---|---|
|
#18+
А трудно сделать вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2017, 08:23 |
|
||
|
Добавление информации в столбец
|
|||
|---|---|---|---|
|
#18+
982183, сделала бы с удовольствием, если бы знала как)) Я с консолью знакома цельных полтора дня, поэтому буду невероятно признательна, если подскажите, как это делается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2017, 08:49 |
|
||
|
Добавление информации в столбец
|
|||
|---|---|---|---|
|
#18+
Выделяем текcт, и нажимаем кнопку FIX на панели, выше окна ввода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2017, 08:56 |
|
||
|
Добавление информации в столбец
|
|||
|---|---|---|---|
|
#18+
982183, огромное спасибо! Теперь буду знать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2017, 09:01 |
|
||
|
Добавление информации в столбец
|
|||
|---|---|---|---|
|
#18+
ИлошаERROR 1265 (01000): Data truncated for column 'Date' at row 2А что там, во второй строке таблицы, в поле Date записано перед изменением? Вроде, безобидное преобразование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2017, 13:00 |
|
||
|
Добавление информации в столбец
|
|||
|---|---|---|---|
|
#18+
vkle, mysql> ALTER TABLE persons -> ADD Data datetime NULL; Query OK, 5 rows affected (0.42 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> ALTER TABLE persons -> CHANGE Data -> Date date; Query OK, 5 rows affected (0.12 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> ALTER TABLE persons -> CHANGE Date -> Date date NOT NULL; ERROR 1265 (01000): Data truncated for column 'Date' at row 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2017, 13:37 |
|
||
|
Добавление информации в столбец
|
|||
|---|---|---|---|
|
#18+
Илоша, Так понимаю, поле `Data` при добавлении содержит данные NULL (или не содержит данных), так как после добавления туда ничего не было записано. Потом поле `Data` было переименовано в `Date` с одновременной сменой типа данных с TIMESTAMP на DATE. В принципе, NULL - он и в Африке NULL, значение вполне допустимо для нового описания поля. Нет данных - нет и ошибок. Далее, по новому описанию поле `Date` становится "NOT NULL" - отсутствие данных не допускается. А поле данных не содержит. Вполне естественно, что существующее состояние не подходят под новое условие и при выполнении запроса должна быть сгенерирована ошибка, указывающая на сей факт. Обычно "Data truncated" говорит о том, что данные "не лезут" в новый формат (например, по длине) и будут обрезаны. Тут не понятно, что не лезет и ещё не понятно, почему нет ошибки на первой строке, ведь там тоже должен быть NULL. Интересу ради протестировал, мне вернулась ошибка "ERROR 1138 (22004): Invalid use of NULL value". После заполнения поля данными ошибка пропала. Возможно, разные версии MySQL ведут себя по-разному (я тестировал на 5.7.19-log). А может быть Вы показали не все запросы, может, где-то какие-то данные были записаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2017, 14:53 |
|
||
|
|

start [/forum/topic.php?fid=47&tid=1830192]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 364ms |

| 0 / 0 |
