c# - 我的 CREATE TABLE MySQL 语法有什么问题?

标签 c# mysql sql create-table

我在使用 CREATE IF NOT EXISTS 子句时遇到了一些问题。

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

我得到的错误是当我尝试执行查询时的异常,我收到消息:

MySql.Data.MySqlClient.MySqlException (0x80004005): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXISTS(price VARCHAR, time VARCHAR)' at line 1

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

CREATE TABLE ticks_14_11_2016 IF NOT EXISTS(price VARCHAR, time 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

最佳答案

if not exists 放在错误的位置,而且 varchar 类型需要强制长度参数。

更正后的版本应该是:

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

将长度更改为适合您的长度。

有关详细信息,请参阅 reference manual .

关于c# - 我的 CREATE TABLE MySQL 语法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40589201/

相关文章:

c# - 将 session 从 ASP.net 存储在 redis 服务器中,同时使用 Response.redirect 重定向到其他页面时抛出错误

c# - 是否可以禁用 OpenFileDialog 取消按钮?

MySQL 可以运行 select * 查询,但不能在 View 上选择列

java - SQL 和问号的问题

sql - T-SQL : Convert datatime2 to datetime for all columns of type datetime2

c# - 如何创建一个空的对象字段?

c# - LINQ 查询返回每个类别中价格最高的项目

python - Django mysqlclient 后端在 Windows 中产生 django.db.utils.OperationalError : (2059, <NULL>)

mysql - 如何获取mysql中存储为数组的字符串数据

sql - Oracle SQL 案例中的数字无效