MySQL 拼写正确但报错1064

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 拼写正确但报错1064相关的知识,希望对你有一定的参考价值。

如图,两行代码完全相同,但第二行的use就报错了。。求大神解释这是为什么呢。。。学mysql的第一天,好难QAQ

第三行末尾加分号再试试,不加分号的话,mysql会认为第二 至 第五行是一条指令,sql没有这样的语法,所以就会报1064错误了。
另外,sql本身不区分大小写,你重复写两遍是要闹哪样啊少年
参考技术A 每个sql语句结束都要加个分号的,在limit 15后面加 ; 即可解决本回答被提问者采纳 参考技术B 可能是格式不对 参考技术C 上一行的分号呢? 参考技术D 登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖登山杖

我应该禁止 CA2204:应该正确拼写文字吗?

【中文标题】我应该禁止 CA2204:应该正确拼写文字吗?【英文标题】:Should I suppress CA2204: Literals should be spelled correctly? 【发布时间】:2010-05-18 14:32:22 【问题描述】:

我最近将我的项目从 Visual Studio 2008 升级到 Visual Studio 2010。

通过启用代码分析,我收到了很多导致规则 CA2204 的警告:字面量应该正确拼写。

编辑

假设我有一个名为GetResult() 的方法,出于某种原因我想在其中抛出一个异常。我希望例外说"GetResult() has failed for some reason"。这会给我一个警告,因为 GetResult 不是一个词。我不会收到有关方法名称GetResult() 的警告,除非我将它放在一个字符串中。这是因为 Get 和 Result 是合法词。

我不认为写GetResult() has failed for some reason 是解决办法。

编辑:在MSDN 它说:

此规则解析文字字符串 成词,标记复合词, 并检查每个的拼写 词/标记。

那是不是意味着GetResult应该被检查为两个词:“Get”和“Result”?

我应该抑制 CA2204 吗?

【问题讨论】:

我不明白您的编辑。您收到 GetResult 的警告,但您没有收到 GetResult 的警告?请澄清。 我认为你应该检查你的编辑,现在没有意义了。 我已经使编辑更清楚了,关键是 GetResult() 方法是一个好名字,我没有收到警告。但是,如果我将该名称放在字符串中,我会收到警告。 【参考方案1】:

"Can't initialize MyClass" 对开发人员来说不是一个很好的信息来引入代码。它很少有助于调试,而且只有在显示时才会让最终用户感到困惑。

一般来说,我会说不要隐藏信息,因为拼写错误会使人看起来比实际更愚蠢,而且这不是您想通过应用传达的信息。

在这个特定实例中,它实际上是一个错误消息的警告——告诉用户如何更正它,自动更正它,或者包括它没有初始化的实际原因你的错误日志。

编辑:包括 OP 的编辑 您可以从这个警告中了解到,您不应该将代码详细信息作为错误消息的一部分(主要是因为当您记录异常时它们将包含在调用堆栈中)。

GetResult() has failed for some reason 假设“某种原因”是权限。消息可以是:

您无权查看这些结果。

具体的失败方法就不用说了,因为可以自动记录堆栈跟踪。

【讨论】:

ArgumentNullException 和 ArgumentException 似乎是此建议的例外情况【参考方案2】:

解决此问题的一种方法是不直接将类型名称添加到字符串中。而是将其作为参数传递。例如

var msg = String.Format("Can't initialize 0", typeof(MyClass).Name);

这样做的好处是既可以绕过 FxCop 规则,又可以安全地进行重构。

【讨论】:

不错的尝试。当我使用方法名称时也会发生这种情况......看看我的编辑。 我认为他需要明确提供 IFormatProvider 否则 FXCop 将引发全球化警告。 String.Format(CultureInfo.CurrentCulture, "Can't initialize 0", typeof(MyClass).Name) 应该可以解决问题。 在 C# 6 中,您可以使用 nameof 获得相同的效果,除了 CodeAnalysis 现在看到字符串文字并抱怨类型名称不是有效单词。这是一个警告,如果它涉及类型名称,则应该禁止显示,imo。【参考方案3】:

也许你不应该把类名变成文字?如何使用或定义可以像这样抛出的异常:

throw new CantInitializeClassException(innerException, typeof(MyClass);

我的想法是将更多信息从更一般的例外转移到更具体的例外。我建议使用上面的示例而不是throw new ApplicationException("Cant initialize MyClass");

【讨论】:

不错的尝试。当我使用方法名称时也会发生这种情况......看看我的编辑。 @brickner - 同样的事情。方法名称包含在堆栈跟踪中。如果你的堆栈链没问题,至少应该是这样。此信息应由异常对象描述。 @Andrey,你是对的。你认为我应该使用 MethodBase.GetCurrentMethod().Name 而不是写名字吗?你可能有一点,但它似乎只是使代码复杂化...... @brickner - 没有。当您抛出异常时,CLR 会将方法名称写入 StackTrace 字段 @bricker:“成词”是指由分隔符分隔的字符序列,即空格。 MyClass 被认为是一个词。真的,我认为这是愚蠢的规则,讨论到了修辞上。如果你不喜欢它 - 压制它并重新开始工作:)【参考方案4】:

CA2204 是关于拼写的。不幸的是,即使在 VS2012 中,它仍然有一个旧的烦人的错误,它无法标记复合词:http://connect.microsoft.com/visualstudio/feedback/details/521030

这导致我在我们的代码分析规则集中关闭了这条规则。

【讨论】:

看起来这种不正确的行为在 Visual Studio 2017 中仍未修复。它必须是一个错误,因为 CA2204 的文档说它分解了复合词。

以上是关于MySQL 拼写正确但报错1064的主要内容,如果未能解决你的问题,请参考以下文章

使用 python 创建 Mysql 数据库 - 不断收到 1064 错误(...在 '%s' 附近使用正确的语法)

#1064 - MySQL 服务器版本在“END”错误附近使用正确的语法?

mysql数据库出现错误代码1064是啥原因?

语法错误或访问冲突:1064 您的 SQL 语法有错误;对应于正确语法的 MySQL 服务器版本

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 ')' 附近使用的正确语法

_mysql_exceptions 错误(1064,“检查与您的 MySQL 服务器版本相对应的手册,以获取在 'default 附近使用的正确语法)值