【问题标题】:MYSQL: Error 1064(42000) MariaDB server for the right syntax to use near 'NOT NULL'MYSQL:错误 1064(42000) MariaDB 服务器在“NOT NULL”附近使用正确的语法
【发布时间】:2017-03-23 18:59:45
【问题描述】:

整个错误代码说:

第 1 行出现错误 1064(42000):您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在“NOT NULL”附近使用的正确语法

它告诉我我没有正确的语法,但这是我缺少的代码:

 CREATE TABLE CONTACTAPPTABLE
(
MAId int unsigned NOT NULL AUTO_INCREMENT,
MAName varchar(50) DEFAULT NOT NULL,
MAEmail varchar(45) DEFAULT NOT NULL,
MASMS varchar(15) DEFAULT NOT NULL,
MAOpinion text DEFAULT NOT NULL,
MAOtherPaperCompanies varchar(20) DEFAULT NOT NULL,
MAStreetAddress varchar(20) DEFAULT NOT NULL,
MAColor varchar(20) DEFAULT NOT NULL,
MAZipCode varchar(20) DEFAULT NOT NULL,
MAMailingType varchar(20) DEFAULT NOT NULL,
MADT timestamp,
PRIMARY KEY(MAId)

)Engine=MyISAM AUTO_INCREMENT=1128 DEFAULT CHARSET=latin1;

【问题讨论】:

  • 您使用的是哪个 RDBMS?我在您的标签中看到三个不同的
  • 如果我没看错问题,我认为是 mysql。我的老师告诉我们使用与他相似的代码,并且他的编写方式相同。
  • SQL Fiddle 编译必须为默认值设置值,并且不能在文本数据类型上设置默认值。
  • 请不要链接到错误消息的屏幕截图。错误消息的文本应直接包含在问题中。这是为了让其他再次遇到这个问题的人可以从这个问题的答案中受益。

标签: mysql mariadb


【解决方案1】:

你需要指定一个默认值:

NOT NULL DEFAULT "abc"

From the docs

列定义:
数据类型 [非空 | NULL] [DEFAULT default_value]

编辑响应xQbert

According to MariaDB's docs,

MariaDB 从 10.2.1 开始
BLOB 和 TEXT 列现在可以有一个 DEFAULT 值。

如果您运行的是 Maria TEXT 数据字段上使用 DEFAULT。

【讨论】:

  • 另外,您不能在文本数据类型上设置默认值。 SQL Fiddle 编译。不会删除文本的默认值。
  • 我也必须改变我的语法吗?
  • 我现在没有要测试的 maria 实例,试试看:D @xQbert 查看我的编辑。在 Maria 10.2.1 中,TEXT 接受默认值。
  • 看起来有效。不得不更改语法并设置默认值,谢谢
猜你喜欢
  • 2017-04-29
  • 1970-01-01
  • 2022-01-09
  • 2018-03-05
  • 2017-08-26
  • 2020-07-03
  • 1970-01-01
  • 2017-12-10
  • 1970-01-01
相关资源
最近更新 更多