在 mysql 中创建 table 和数据库时出现错误 1064 (42000)

ERROR 1064 (42000) while creating a table and database in mysql

我在通过 .sql 脚本执行我的 mysql 查询时遇到以下错误,但不知道是什么导致了这个错误。

我在 x86_64(MySQL 社区服务器 - GPL)

上为 macos10.15 使用 mysql 版本 8.0.23

错误:

ERROR 1064 (42000) at line 1: 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 '/Users/shivamshekhar/Documents/Others/chat-app-backend/scripts/mysql/db.sql' at line 1

.sql 文件

CREATE DATABASE IF NOT EXISTS `chat_app`;  

USE `chat_app`;  

CREATE TABLE IF NOT EXISTS `user_details` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    `name` VARCHAR(255) NOT NULL, 
    `password` VARCHAR(255) NOT NULL, 
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP, 
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    INDEX `idx_name` (`name`), 
    CONSTRAINT `uc_name` UNIQUE (`name`)
);

终端命令:

mysql -u admin -ppassword -e ~/Documents/Others/chat-app-backend/scripts/mysql/db.sql

语法是INT UNSIGNED,不是UNSIGNED INT。此外,NOT NULLPRIMARY KEY 上是多余的。所以试试这个:

CREATE TABLE IF NOT EXISTS `user_details` (
    `id`  INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    `name` VARCHAR(255) NOT NULL, 
    `password` VARCHAR(255) NOT NULL, 
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP, 
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    INDEX `idx_name` (`name`), 
    CONSTRAINT `uc_name` UNIQUE (`name`)
);

如前所述,它必须是 int unsigned。 如果数据库中有任何分区列,可以在末尾添加,指定压缩类型。 (视上下文而定)

创建 TABLE 如果不存在 user_details ( id INT UNSIGNED AUTO_INCREMENT 主键, name VARCHAR(255) 不为空, password VARCHAR(255) 不为空, created_at 日期时间默认值 CURRENT_TIMESTAMP, updated_at 日期时间默认值 CURRENT_TIMESTAMP 更新时 CURRENT_TIMESTAMP, 索引 idx_name (name), 约束 uc_name 唯一 (name) ) 由 () 分区存储为 parquet (compression =<"compression type">);

-e命令的意思是“执行命令”,而不是“加载并执行源文件”。

通过标准输入将源文件发送到客户端:

mysql -u admin -ppassword < ~/Documents/Others/chat-app-backend/scripts/mysql/db.sql

或者给客户端提供相应的命令:

mysql -u admin -ppassword -e "SOURCE ~/Documents/Others/chat-app-backend/scripts/mysql/db.sql"