2016-11-14 4 views
0

У меня возникли проблемы с СОЗДАЙТЕ, ЕСЛИ НЕ СУЩЕСТВУЕТ.Что не так с моим синтаксисом CREATE TABLE MySQL?

Я использую приложение C# для создания таблицы MySQL, соединение с БД было установлено, поэтому это не проблема.

Ошибки я получаю исключение при попытке выполнить запрос, я получаю сообщение:

MySql.Data.MySqlClient.MySqlException (0x80004005): У вас ошибка в вашем SQL синтаксис; проверьте руководство, которое соответствует Вашей версии сервера MySQL для корректного синтаксиса использовать вблизи «IF NOT EXISTS (цена VARCHAR, время VARCHAR)» в строке 1

В режиме отладки, немедленное окно показывает мою команду строка как:

CREATE TABLE ticks_14_11_2016 IF NOT EXISTS (цены VARCHAR, время VARCHAR)

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

Кроме того, здесь # код C, который я использую, чтобы построить строку и выполнить запрос:

string tableName = "ticks_" + getTodayString(); 
      if (databaseClient.IsConnect()) { 
       string tableString = "CREATE TABLE " + tableName + 
       " IF NOT EXISTS" + 
       "(price VARCHAR, " + 
       "time VARCHAR)"; 

       try 
       { 
        var command = databaseClient.Connection.CreateCommand(); 
        command.CommandText = tableString; 
        command.ExecuteNonQuery(); 
       } catch (Exception e) 
       { 
        Console.WriteLine(e); 
       } 
      } 

переменная databaseClient имеет элемент, который является объектом MySQLConnection

Кроме того, моя версия сервера: 5.6.28-76.1

+0

?? 'time VARCHAR'. В создании есть важные woops – RiggsFolly

+0

yea Я знаю, что это должно быть дата/время, но пока я доволен просто наличием строки. Я не думаю, что проблема в том, что из-за типов столбцов –

ответ

3

Вы т он if not exists не в том месте, а также, тип varchar требует аргумента обязательной длины.

Исправленная версия должна быть:

CREATE TABLE IF NOT EXISTS ticks_XXXXX (price VARCHAR(10), time VARCHAR(10)); 

Изменение длины к тому, что подходит для вас.

Для получения дополнительной информации см. reference manual.

+3

http://www.funnydogsite.com/pictures/Very_Happy_Dog.jpg –

+1

высокие пять для скорости доставки. Я даже не могу принять ваш ответ за другой 2 минуты lol большое спасибо –

0

У вас есть другие способы проверить, существует ли таблица в базе данных или нет.

IF OBJECT_ID(N'dbo.ticks_14_11_2016', N'U') IS NOT NULL 
BEGIN 
    ------Exists 
END 

IF EXISTS(SELECT 1 FROM sys.Objects WHERE Object_id = 

OBJECT_ID(N'dbo.ticks_14_11_2016') AND Type = N'U') 
BEGIN 
    ------Exists 
END 

    IF EXISTS(SELECT 1 FROM sys.Tables WHERE Name = N'ticks_14_11_2016 ' AND Type = N'U') 
BEGIN 
     ----Exists 
END 

IF OBJECT_ID('ticks_14_11_2016') IS NOT NULL 
BEGIN 
    -----Exists 
END 

Используйте вашу логику соответственно

 Смежные вопросы

  • Нет связанных вопросов^_^