【问题标题】:Got MySQL Error #1064 on a simple insert, What am I doing wrong?简单插入时出现 MySQL 错误 #1064,我做错了什么?
【发布时间】:2015-06-26 04:35:31
【问题描述】:

我需要一些帮助,当我尝试向表中插入数据时,我收到了error 1064

INSERT INTO areas (Nombre) values ('area 1');

表:

CREATE TABLE Areas (
    Id INT PRIMARY KEY AUTO_INCREMENT,
    Nombre VARCHAR(100) UNIQUE NOT NULL
);

怎么了?

【问题讨论】:

  • 插入查询中的表名。将areas 更改为Areas
  • 请使用您正在使用的操作系统(Windows 或 Linux)更新您的问题。
  • 我认为他正在使用 Linux。
  • 您的错误信息与您在问题中向我们展示的内容不一致。您是否还有其他信息可以解释1064 错误?
  • INSERT 语句没问题,只要先运行 CREATE TABLE。重复键错误为Error code: 1062,表不存在错误为Error code: 1146。但是您报告正在返回错误代码1064。该错误通常包括语句文本的一部分,标识语句文本中 MySQL 检测到语法错误的点。以目前的形式,这个问题是无法回答的。 (您尚未确定使用哪个客户端向数据库提交 SQL。)

标签: mysql insert create-table


【解决方案1】:

这是因为您使用 areas 而不是 Areas

【讨论】:

  • 如果他运行的是 Windows,这无关紧要。
  • 是的,它不会,但如果您使用不同的操作系统进行开发,它会为您省去麻烦。
  • 他应该使用小写的表名 everywhere 来完全避免这个问题。这也将使他的 MySQL 代码在 Windows 和 Linux 之间更具可移植性。
【解决方案2】:

您的服务器配置似乎区分大小写,因此 area 和 Areas 将是 2 个表。

试试下面-

INSERT INTO Areas (Nombre) VALUES ('area 1');

如果您想照顾它,请更新 my.cnf 或 my.ini 文件中的以下变量。

lower_case_table_names = 1

【讨论】:

  • @Mauro 提到他试过这个但没有用。
  • 如果这是问题所在,则更可能的错误是“1146 表不存在”。
  • @Mauro:首先通过 desc 区域检查表是否存在;如果存在,则再次执行您的插入语句并检查您遇到的错误。
猜你喜欢
  • 2015-10-09
  • 2013-11-25
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
  • 2021-03-05
相关资源
最近更新 更多