Строка или двоичные данные будут усеченным сообщением во время команды вставки SQL Server

#sql #sql-server #insert

#sql #sql-server #вставить

Вопрос:

Я пытаюсь вставить некоторые данные в таблицу SQL Server, которую я создал с нуля, и не могу добавить два значения, которые я хотел бы добавить, а именно «Технологический вопрос», в столбец технологические вопросы, и я не могу ввести временную метку в моем столбце time_entered.

По сути, я пытаюсь создать базу данных Microsoft SQL Server, чтобы в конечном итоге перенять существование существующей базы данных SQLite3, поэтому в моем раннем тестовом примере здесь я пытаюсь перенести одну часть данных из существующей таблицы SQLite3 в таблицу SQL Server.

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

 select * from questiontype

select [Technology Questions], time_entered
from questiontype

INSERT INTO questiontype ([Technology Questions], time_entered)
VALUES ('Technology Question', '2019-03-23 16:59')
  

Я надеялся увидеть значения данных ‘Технологический вопрос’, ‘2019-03-23 16:59’ в соответствующих столбцах в таблице SQL Server ‘questiontype’

Когда я пытаюсь выполнить вышеописанное, я получаю следующее,

Сообщение 8152, уровень 16, состояние 4, строка 6
Строка или двоичные данные будут усечены

Комментарии:

1. Опубликуйте таблицу DDL или запустите sp_help 'questiontype' , чтобы увидеть типы данных столбцов и максимальную длину. Если максимальная длина столбца слишком мала для размещения данных, SQL Server выдаст вам эту ошибку.

2. Спасибо! Это решает эту проблему. Вторичная проблема, с которой я сталкиваюсь, заключается в том, что теперь, когда я запускаю этот cmd, я получаю ‘Сообщение 515, уровень 16, состояние 2, строка 6 Не может вставить значение NULL в столбец ‘int’, таблица ‘TALLY.dbo.questiontype’; столбец не допускает нулевых значений. ОШИБКА вставки. Оператор был завершен.’ Но я думал, что столбец int не должен был быть нулевым

3. Questiontype — это таблица, а не столбец. Я думал, что при создании базовой таблицы вам нужно было создать имя столбца, такое как int для integer, и установить, что оно не допускает значения null, чтобы последующий ввод данных в таблицу автоматически увеличивал, например, запись # 1, запись # 2, запись # 3 и т. Д

4. Вызов вашего столбца int редко (никогда) является хорошей идеей. int это ключевое слово для типа данных с тем же именем, и вызов вашего столбца будет сбивать с толку. В вашем операторе insert вы не вставляете значение в свой столбец int и, следовательно, ошибка. Здесь все совершенно ясно.

5. Да, я обнаружил, что допустил ошибку с этим. Я изменил имя столбца на ‘ID’, ввел int, а также установил его в качестве первичного ключа. Когда я пытаюсь выполнить вышеупомянутую инструкцию insert, я все еще получаю сообщение ‘Сообщение 515, уровень 16, состояние 2, строка 6 Не может вставить значение NULL в столбец ‘ID’, таблица ‘TALLY.dbo.questiontype’; столбец не допускает нулевых значений. ОШИБКА вставки. Оператор был завершен.’ оператор

Ответ №1:

Несколько проблем, но пришлось установить имя столбца в ID вместо ‘INT’ и убедиться, что оно содержит свойство identity. Также пришлось увеличить ограничение по символам для каждого столбца.