【问题标题】:MySQL #1064 - You have an error in your SQL syntax at line 2MySQL #1064 - 第 2 行的 SQL 语法有错误
【发布时间】:2015-09-20 07:38:39
【问题描述】:

这段代码有什么问题?尝试导入此 sql 时收到该消息:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的 ''codigo' int(11) unsigned NOT NULL auto_increment, 'razao_social' varchar(11) N' 附近使用正确的语法

CREATE TABLE IF NOT EXISTS `char` (
'codigo' int(11) unsigned NOT NULL auto_increment,
'razao_social' varchar(11) NOT NULL DEFAULT '',
'fantasia' varchar(11) NOT NULL DEFAULT '',
'data_de_cadastro' datetime NOT NULL DEFAULT '',
'cep' varchar(11) NOT NULL DEFAULT '',
'logradouro' varchar(11) NOT NULL DEFAULT '',
'numero' varchar(11) NOT NULL DEFAULT '',
'complemento' varchar(11) NOT NULL DEFAULT '',
'bairro' varchar(11) NOT NULL DEFAULT '',
'cidade' varchar(11) NOT NULL DEFAULT '',
'uf' varchar(11) NOT NULL DEFAULT '',
'cnpj' varchar(11) NOT NULL DEFAULT '',
'insc_estadual' varchar(11) NOT NULL DEFAULT '',
'incs_municipal' varchar(11) NOT NULL DEFAULT '',
'telefone01' varchar(11) NOT NULL DEFAULT '',
'telefone02' varchar(11) NOT NULL DEFAULT '',
'contato' varchar(11) NOT NULL DEFAULT '',
'associados' varchar(11) NOT NULL DEFAULT '',
'funcionários' varchar(11) NOT NULL DEFAULT '',
'data_socio' datatime NOT NULL DEFAULT '',
'data_desligamento' datatime NOT NULL DEFAULT '',
'email' varchar(11) NOT NULL DEFAULT '',
'website' varchar(11) NOT NULL DEFAULT '',
'situacao' int(11) NOT NULL DEFAULT '',
PRIMARY KEY  (`codigo`),
UNIQUE KEY `razao_social` (`razao_social`),
KEY `fantasia` (`account_id`),
KEY `cnpj` (`cnpj`),
KEY `insc_estadual` (`insc_estadual`),
KEY `incs_municipal` (`incs_municipal`)
) ENGINE=MySQL;

【问题讨论】:

  • 不要将列名用引号括起来。使用反引号 - 或者什么都不用。
  • 另外,虽然不是您的具体错误的原因,但 Aman Aggarwal 的观点是一个很好的观点(遗憾的是它被删除了)。不应使用保留字作为列/表标识符。

标签: mysql sql syntax-error create-table


【解决方案1】:
  1. 你应该在 MySQL 中使用反引号 ` 来转义列名标识符,而不是单引号 '实际上,所有标识符,就像你对表名所做的那样);
  2. 您提供 datatime 作为 data_socio 的数据类型和 data_desligamento,这是无效的(因为它不存在,我想你的意思是datetime);
  3. MySQL 不是有效的 engine 选项(也许你的意思是 MyISAM),here is a list of storage engines
  4. '' 不是 datetime 数据类型(data_desligamentodata_sociodata_de_cadastro)的有效 default 值;
  5. 您正在使用key 为您的表中甚至不存在的列account_id 创建一个索引fantasia或者它只是一个错字,应该调用fantasiaaccount_id 或反之亦然?- 只是在这里猜测)。

SQLFiddle

【讨论】:

    【解决方案2】:

    不要在列名中使用单引号('),而是使用波浪号(`)。 例如:

    this column 'razao_social'  should be write as `razao_social`
    

    【讨论】:

    • 是否有任何技术文档说明它有什么不同?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    相关资源
    最近更新 更多