【问题标题】:Mysql syntax error for creating tableMysql 创建表的语法错误
【发布时间】:2015-09-10 09:48:42
【问题描述】:

我想在mysql中创建一个表:--

create table app_own(app_id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
sp_id bigint(20),
title varchar(30),
description varchar(60),
details LONGTEXT(1000),
primary key(app_id ),
FOREIGN KEY (user_id) REFERENCES student(sp_id));

其中 app_id 是主键,sp_id 是学生表的外键引用。

但我收到错误:--

    ERROR 1064 (42000): 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 '(1000)0,primary key(app_id ),FOREIGN KEY (sp_id) 
REFERENCE' at line 1

为什么会出现错误?

【问题讨论】:

    标签: mysql database create-table


    【解决方案1】:

    尝试运行这个:-

       use db;
    CREATE TABLE parent (
        id INT UNSIGNED NOT NULL,
        PRIMARY KEY (id)
    ) ;
    
    CREATE TABLE Persons
    (
    PID int UNSIGNED  NOT NULL AUTO_INCREMENT,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City longtext,
    PRIMARY KEY (PID),
    FOREIGN KEY (PID) 
            REFERENCES parent(id)
     ON DELETE CASCADE
    );
    

    LONGTEXT [CHARACTER SET charset_name] [COLLATE collat​​ion_name]

    最大长度为 4,294,967,295 或 4GB (232 − 1) 个字符的 TEXT 列。如果值包含多字节字符,则有效最大长度会更小。 LONGTEXT 列的有效最大长度还取决于客户端/服务器协议中配置的最大数据包大小和可用内存。每个 LONGTEXT 值都使用 4 字节长度前缀存储,该前缀指示值中的字节数。

    【讨论】:

    • 我已经尝试过您的代码..我收到消息:--ERROR 1005 (HY000): Can't create table 'mydatabase.persons' (errno: 150)
    • 父表的主键你用过无符号吗
    • 在您尝试创建表的数据库中是否有名称为 Parent 的表
    • 不..它很干净..我已经复制并粘贴了你的代码
    • 你用你的 dbname 替换了 db
    【解决方案2】:

    您应该使用varchar(1000) 代替longtext(1000)

    此外,user_id 列在您的表中不存在。

    【讨论】:

      【解决方案3】:

      您不能在此上下文中指定 LONGTEXT。看看manual

      将您的代码更改为:

      create table app_own(app_id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      sp_id bigint(20),
      title varchar(30),
      description varchar(60),
      details LONGTEXT,
      primary key(app_id),
      FOREIGN KEY (user_id) REFERENCES student(sp_id));
      

      【讨论】:

        【解决方案4】:

        此外,您不应在主键 (app_id) 的括号之间使用空格。

        【讨论】:

          猜你喜欢
          • 2014-04-09
          • 2016-02-07
          • 2014-05-17
          • 2012-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-14
          • 1970-01-01
          相关资源
          最近更新 更多