C# 我的createtablemysql语法有什么问题?

C# 我的createtablemysql语法有什么问题?,c#,mysql,sql,create-table,C#,Mysql,Sql,Create Table,我在CREATE IF NOT EXISTS子句中遇到了一些问题 我正在使用一个C#应用程序创建一个MySQL表,与DB的连接已经建立,所以这不是问题 我得到的错误是一个异常。当我尝试执行查询时,我得到以下消息: MySql.Data.MySqlClient.MySqlException(0x80004005):您有一个错误 在SQL语法中;检查与您的MySQL对应的手册 服务器版本,如果不存在,则使用near'的正确语法(价格 第1行的VARCHAR,time VARCHAR)' 在调试模式下

我在CREATE IF NOT EXISTS子句中遇到了一些问题

我正在使用一个C#应用程序创建一个MySQL表,与DB的连接已经建立,所以这不是问题

我得到的错误是一个异常。当我尝试执行查询时,我得到以下消息:

MySql.Data.MySqlClient.MySqlException(0x80004005):您有一个错误 在SQL语法中;检查与您的MySQL对应的手册 服务器版本,如果不存在,则使用near'的正确语法(价格 第1行的VARCHAR,time VARCHAR)'

在调试模式下,即时窗口将我的命令字符串显示为:

如果不存在,则创建表ticks_14_11_2016(价格变量、时间 瓦查尔)

从我看到的示例来看,这应该是正确的语法。我暂时不担心约束和键,我只需要执行查询

另外,下面是我用来构建字符串和执行查询的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

如果
不存在,则
位于错误的位置,而且
varchar
类型需要一个强制长度参数

更正版本应为:

CREATE TABLE IF NOT EXISTS ticks_XXXXX (price VARCHAR(10), time VARCHAR(10));
将长度更改为适合您的长度


有关详细信息,请参见。

如果
不存在,则
位于错误的位置,而且
varchar
类型需要强制的长度参数

更正版本应为:

CREATE TABLE IF NOT EXISTS ticks_XXXXX (price VARCHAR(10), time VARCHAR(10));
将长度更改为适合您的长度


有关更多信息,请参阅。

您还有其他方法来检查数据库中是否存在表

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

相应地使用您的逻辑

您还有其他方法来检查数据库中是否存在表

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

相应地使用您的逻辑

time VARCHAR
making中有一个主要的woops是的,我知道它应该是一个日期/时间,但现在我很高兴有一个字符串。我不认为手头的问题是因为列类型
time VARCHAR
making中有一个主要的woops是的,我知道它应该是一个日期/时间,但现在我很高兴有一个字符串。我不认为眼前的问题是因为快速交货的列类型是H 5。。再过两分钟我就不能接受你的回答了,哈哈,非常感谢你这么快就给了我五分。。再过两分钟我就不能接受你的回答了哈哈,太谢谢你了