您好,登錄后才能下訂單哦!
我在自己搭建的mysql服務中,在使用create table創建表時報了1064錯誤,嘗試網上找了各種解決方法,最后還是被自己試著解決了。解決的有的稀里糊涂的,畢竟我自己對數據庫知識還沒個很清晰的認知。廢話不多說了,下面看我的解決歷程吧。
自己創建表的初衷:想要從無到有的嘗試
set names utf8
set foreign_key_checks=0
drop table if exists `own_reimbursement`;
create table `own_reimbursement` (
`id` int(10) not null AUTO_INCREMENT,
`start_time` date not null default,
`end_time` date not null default,
`travel_time` int(3) not null default,
`place_name` char(30) default comment '地名',
`project_name` char(30) default comment '項目名稱',
`venue_name` char(30) default comment '場館名稱',
`personnel_name` char(30) default comment '人員',
`hotel_expense` float(7) default comment '住宿費',
`taxi_fare` float(7) not null default comment '打的費',
`travel_allowance` float(7) not null default comment '出差補助',
`road_fee` float(7) not null default comment '路費',
`subsidy` float(7) not null default comment '報銷合計',
primary key (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8;
BEGIN;
INSERT INTO `own_reimbursement` VALUES ('1', '2018-08-22', '2018-08-31', '10', '江西景德鎮','xx項目','xxxx運動中心','王思聰','1830','195.8','750','738','3513.8');
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
在執行時一直報1064錯誤,讓我百思不得其解,還傻傻的以為真是version問題,還特意找了相關的version說明看(下了英文版的一臉懵逼的),無賴直接簡單粗暴的在網上搜mysql 創建表示報1064錯誤,還真看到不少解決方法,但沒一條適用的。
[SQL]set names utf8
set foreign_key_checks=0
drop table if exists `own_reimbursement`;
[Err] 1064 - 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 'set foreign_key_checks=0
drop table if exists `own_reimbursement`' at line 2
網上解決版本:
1.查看create table 語句里面的表、列、索引都要反斜杠符號也可以不使用,但不能寫成 '單引號。不然執行就會報1064錯誤了
2.不要使用mysql的保留字
我的錯誤是因為 沒搞清楚default。去掉default后就成功了。
set names utf8;
set foreign_key_checks = 0;
drop table if exists `own_reimbursement`;
create table `own_reimbursement` (
`id` int(10) not null AUTO_INCREMENT,
`start_time` date not null ,
`end_time` date not null ,
`travel_time` int(3) not null ,
`place_name` char(30) NOT NULL comment '地名',
`project_name` char(30) NOT NULL comment '項目名稱',
`venue_name` char(30) NOT NULL comment '場館名稱',
`personnel_name` char(30) NOT NULL comment '人員',
`hotel_expense` float(7) comment '住宿費',
`taxi_fare` float(7) not null comment '打的費',
`travel_allowance` float(7) not null comment '出差補助',
`road_fee` float(7) not null comment '路費',
`subsidy` float(7) not null comment '報銷合計',
primary key (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS = 1;
原因:
default 修飾符
可以使用 DEFAULT 修飾符為字段設定一個默認值。
如果一個字段中沒有指定 DEFAULT 修飾符,MySQL 會依據這個字段是 NULL 還是 NOT NULL 自動設置默認值。
如果指定字段可以為 NULL,則 MySQL 為其設置默認值為 NULL。
如果是 NOT NULL 字段,MySQL 對于數值類型插入 0,字符串類型插入空字符串,
時間戳類型插入當前日期和時間,ENUM 類型插入枚舉組的第一條。
如果創建表時要使用default修飾符,那不要忘記在default后面加個默認值。
例如:
CREATE TABLE `websites` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL DEFAULT '' COMMENT '站點名稱',
`url` varchar(255) NOT NULL DEFAULT '',
`alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',
`country` char(10) NOT NULL DEFAULT '' COMMENT '國家',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。