在 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 NULL
在 PRIMARY 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"
我在通过 .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 NULL
在 PRIMARY 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"