MySQL - PhpMyadmin - 创建多个表

时间:2016-03-26 15:23:43

标签: php mysql ddl create-table

我无法理解为什么此查询无法在PHPMyAdmin中创建此表结构。

我总是收到此错误消息:

  

1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法

     <'>'MAX'附近,       FOREIGN KEY(form_id)REFERENCES表格(Id))'在第4行

CREATE TABLE form(
    Id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    Title VARCHAR(500),
    Is_Active BIT,
    Is_Trash BIT,
    Date_Created DATETIME
);
CREATE TABLE form_data(
    Id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    form_id INT,
    formdata VARCHAR(MAX),
    FOREIGN KEY (form_id) REFERENCES form (Id)
);

3 个答案:

答案 0 :(得分:3)

varchar(max)是MS SQL Server的语法。 MySQL没有等效的,所以你只需要使用很长的版本。此外,一旦你解决了这个问题,你就会遇到form_data.form_idform.id的类型不同(一个是无符号而另一个不是)的问题,所以它不能参考它。简而言之:

CREATE TABLE form_data(
    Id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    form_id INT UNSIGNED, -- Second issue
    formdata VARCHAR(4000), -- First issue 
    FOREIGN KEY (form_id) REFERENCES form (Id)
);

答案 1 :(得分:2)

form_data中有2个问题:

  1. form_id的类型,应该是INT UNSIGNED以匹配表form的Id类型的类型
  2. 使用formdata VARCHAR(MAX),您应该将MAX更改为实数,例如255
  3. 试试这段代码:

    CREATE TABLE form(
        Id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        Title VARCHAR(500),
        Is_Active BIT,
        Is_Trash BIT,
        Date_Created DATETIME
    );
    CREATE TABLE form_data(
        Id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        form_id INT UNSIGNED,
        formdata VARCHAR(255),
        FOREIGN KEY (form_id) REFERENCES form (Id)
    );
    

答案 2 :(得分:1)

您的错误来自:

formdata VARCHAR(MAX),

将MAX更改为某个值。