Rust Diesel不能识别主键



我说了算。sql文件:

`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`first_name` VARCHAR(255),
`last_name` VARCHAR(255),
`user_name` VARCHAR(255) NOT NULL UNIQUE,
`email` VARCHAR(255) NOT NULL UNIQUE,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
);

当我运行diesel migration时,我收到以下错误:

Diesel只支持有主键的表。表用户没有主键

不知道我做错了什么,任何帮助将非常感激!

我最终在mysql中直接手动创建表,但是当我试图生成模式时,我再次收到"无主键";来自diesel命令行的错误消息。因此,我开始摆弄我的sql,看看我是否可以使它工作,并最终使用以下命令:

CREATE TABLE users (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`first_name` VARCHAR(255),
`last_name` VARCHAR(255),
`user_name` VARCHAR(255) NOT NULL UNIQUE,
`email` VARCHAR(255) NOT NULL UNIQUE,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

似乎为了让diesel识别一个列具有PRIMARY KEY,主键属性必须是最后指定的。

我不确定这是一个错误,一个已知的怪癖,或有效的语法。在任何情况下,这是相当恼人的追踪。我将做更多的测试,并接受这个答案,如果它似乎是一个强大的解决方案。

(编辑:我还用一个类似的SQL查询测试了这一点,其中AUTO_INCREMENT在PRIMARY KEY之后,它没有工作)

最新更新