我在使用 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/