当前位置: 首页 > 面试题库 >

创建表时出现MySQL语法错误

农永宁
2023-03-14
问题内容

我在Docker容器中有一个MySQL数据库。入口点执行创建数据库的脚本和创建表的脚本。

除了一张桌子,其他所有东西都工作正常。

use db;

... creating other tables

CREATE TABLE mediametadata
(
id bigint not null  primary key,
title VARCHAR not NULL,
artist VARCHAR not NULL,
album VARCHAR,
releaseYear bigint,
mediaId bigint NOT NULL,
constraint fk__pk_metadata_objectid
        foreign key (id) references objectid (id),

constraint fk__metadata_media_id
        foreign key (mediaId) references media (id)
)
;

记录到控制台的错误是

mysql_1  | ERROR 1064 (42000) at line 150: 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 'not NULL,
mysql_1  | artist VARCHAR not NULL,
mysql_1  | album VARCHAR,
mysql_1  | releaseYear bigint,
mysql_1  | mediaId bi' at line 4

第150行是后面的开括号 CREATE TABLE mediametadata

  • MySQL版本:8.0.3-rc-log
  • 主机操作系统:Debian jessie

我开始考虑year并且metadata可能是保留关键字,因此我重命名了表和year列,但错误仍然存​​在。


问题答案:

@Bill Karwin在第一条评论中回答Varchar需要长度[Varchar(number)]



 类似资料:
  • 我的logcat消息: (1)near“INTEGER”:CREATE_SQL android.database.sqlite.sqliteexception中的语法错误异常:编译时:create BOMUL_PLACE(_id INTEGER NOT NULL主键auticrement,NAME TEXT,LAT DOUBLE,LNG DOUBLE,CHECK INTEGER DEFAULT 0

  • 我正在用MySQL数据库构建一个django应用程序。当我第一次运行“Python Manage.py Migrate”时,一些表创建得很好,然后出现一些错误。引出的错误是: 完整的回溯是:

  • 我想创建一个在MySQL中拥有自己数据库所有权限的用户。 当我使用这个用户创建一个表时,MySQL返回SQL server正在使用只读选项运行。 但是,当我改变到另一个现有用户的所有权限上,我可以创建表没有错误。 我想知道只读选项是全局的还是什么? 以下是我使用MySQL root的MySQL命令: 然后我切换到用户"demo": 所以我检查了只读选项,它似乎是打开的。 然而,我尝试使用另一个用户

  • 我正在尝试使用EclipseLink创建一个表。正在使用的java类是:- EL警告]:2017-04-07 14:04:53.768--ServerSession(1650327539)--异常[EclipseLink-4002](Eclipse持久性服务-2.6.3.v20160428-59C81C5):org.Eclipse.Persistence.exceptions.DatabaseEx

  • 创建一个函数,但它给出的错误数据库表如下所示

  • 我正在尝试使用此查询删除具有重复的列值的行: 但这给了 查询看起来很好。我错过了什么?