2016-04-13 2 views
0

Im получаю следующее сообщение об ошибке с этим SQLСоздание таблицы SQL не удалось

У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса использовать вблизи '), messageRead VARCHAR (3), messageReadDateTime DATETIME(), messageReplied VARCHA' в строке 8

и косяк Удаться почему это не удается

$sql = "CREATE TABLE messages (
messageID INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
yearID VARCHAR(6), 
fromLevel VARCHAR(255), 
fromID VARCHAR(11), 
toLevel VARCHAR(255), 
toID VARCHAR(11), 
sentDateTime DATETIME(), 
messageRead VARCHAR(3), 
messageReadDateTime DATETIME(), 
messageReplied VARCHAR(3), 
messageRepliedDateTime DATETIME(), 
submitDate TIMESTAMP 
)"; 

Любые идеи?

+0

Его простой, просто заменить все 'DATETIME()' 'от DATETIME' – webGautam

ответ

3

Удалите скобки после DATETIME. Это недопустимый синтаксис.

messageReadDateTime DATETIME(), 
          ^^ 

должен быть только

messageReadDateTime DATETIME , 

Похоже, есть несколько случаев.

Для отладки такой проблемы может быть полезно сократить определение таблицы до всего лишь одного столбца и посмотреть, работает ли это. Затем отбросьте стол и повторите попытку с помощью двух столбцов, создавая до тех пор, пока не найдете проблему.

Или просто отправьте вопрос о StackOverflow. Какой бы ни.

+0

спасибо, хотя это было нужно ... oops – CarlRyds

+0

@CarlR Как вы думаете, для чего вам это нужно? Вы не вызываете функцию, вы указываете тип данных, и круглые скобки используются там только для добавления параметров, таких как размер 'VARCHAR'. – Barmar

1

() Удалите после типа данных DATETIME

CREATE TABLE messages 
(
    messageID INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    yearID VARCHAR(6), 
    fromLevel VARCHAR(255), 
    fromID VARCHAR(11), 
    toLevel VARCHAR(255), 
    toID VARCHAR(11), 
    sentDateTime DATETIME, 
    messageRead VARCHAR(3), 
    messageReadDateTime DATETIME, 
    messageReplied VARCHAR(3), 
    messageRepliedDateTime DATETIME, 
    submitDate TIMESTAMP 
) 
+0

спасибо, хотя это было нужно ... упс – CarlRyds

1

DATETIME() не требует скобок .:

messageRepliedDateTime DATETIME 

типа DATETIME используется для значений, которые содержат как дату и время части. MySQL извлекает и отображает значения DATETIME в формате «YYYY-MM-DD HH: MM: SS». Поддерживаемый диапазон: «1000-01-01 00:00:00» до «9999-12-31 23:59:59».

Источник: http://dev.mysql.com/doc/refman/5.7/en/datetime.html