2016-12-26 61 views
0

我的SQL错误,我有以下SQL命令:创建和添加列,表

ALTER TABLE `personal_information` ADD `applicant_name` VARCHAR(50) NOT NULL AFTER `ID`, ADD `mothers_name` VARCHAR(50) NOT NULL AFTER `applicant_name`, ADD `date_of_birth` DATE NOT NULL AFTER `mothers_name`, ADD `Place_of_birth` VARCHAR(200) NOT NULL AFTER `date_of_birth`, ADD `marital_status` ENUM(0) NOT NULL AFTER `Place_of_birth`, ADD `sex` ENUM(0) NOT NULL AFTER `marital_status`, ADD `religion` ENUM(0) NOT NULL AFTER `sex`, ADD `profession_ar` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL AFTER `religion`, ADD `profession` VARCHAR(50) NOT NULL AFTER ` profession_ar`; 

这是一个新的表。它只有ID(PRIMARY KEY)列。我对后端完全陌生。所以我对sql命令不了解太多。我从我的管理员预览SQL btn得到了这个。这会产生一个错误。错误是:

ALTER TABLE `personal_information` ADD `applicant_name` VARCHAR(50) NOT NULL AFTER `ID`, ADD `mothers_name` VARCHAR(50) NOT NULL AFTER `applicant_name`, ADD `date_of_birth` DATE NOT NULL AFTER `mothers_name`, ADD `Place_of_birth` VARCHAR(200) NOT NULL AFTER `date_of_birth`, ADD `marital_status` ENUM(0) NOT NULL AFTER `Place_of_birth`, ADD `sex` ENUM(0) NOT NULL AFTER `marital_status`, ADD `religion` ENUM(0) NOT NULL AFTER `sex`, ADD `profession_ar` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL AFTER `religion`, ADD `profession` VARCHAR(50) NOT NULL AFTER ` profession_ar` 

MySQL表示:文件

#1064 - 你在你的SQL语法错误;检查对应于你的MySQL服务器版本在线路附近使用 '0)NOT NULL AFTER Place_of_birth,ADD sex ENUM(0)NOT NULL AFTER`marital_st' 正确的语法1

我使用WAMP和手册我的SQL版本是5.7.14。我能做什么?

编辑:

没有答案为我工作。因为,我的phpmyadmin版本是4.6.4,它不支持最新的mysql Enum语法。但我的MySQL服务器版本是5.7.14。所以旧的枚举语法不支持通过MySQL 5.7.14(可能会支持,我不确定,但一起MySQL 5.7.14和phpmyadmin 4.6.4创建了一些问题)。所以我更新了我的phpmyadmin到4.6.5.2版本,并且一切都很完美。

感谢球员给我答案。一旦我获得15个声望,我会得到较高的选票。

回答

0

您的查询应该是这样的:

ALTER TABLE `personal_information` ADD `applicant_name` VARCHAR(50) NOT NULL AFTER `ID`, ADD `mothers_name` VARCHAR(50) NOT NULL AFTER `applicant_name`, ADD `date_of_birth` DATE NOT NULL AFTER `mothers_name`, ADD `Place_of_birth` VARCHAR(200) NOT NULL AFTER `date_of_birth`, ADD `marital_status` ENUM('0') NOT NULL AFTER `Place_of_birth`, ADD `sex` ENUM('0') NOT NULL AFTER `marital_status`, ADD `religion` ENUM('0') NOT NULL AFTER `sex`, ADD `profession_ar` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL AFTER `religion`, ADD `profession` VARCHAR(50) NOT NULL AFTER `profession_ar`; 

你要通过在单引号值声明ENUM

编辑: 有去年profession_ar一个缺口,其另一个错误发生。

0

你应说明ENUM的选项,如:

... ADD marital_status ENUM( '单', '结婚')NOT NULL AFTER Place_of_birth, ...

0

这是很简单,你只需在mysql编辑器上运行下面的查询。但不要忘记选择数据库。如果您有任何关于此问题的进一步询问,您可以随时关注我。请注意你的错误。谢谢enter image description here

ALTER TABLE personal_information 
ADD COLUMN `applicant_name` VARCHAR(50) NOT NULL AFTER `id`, 
ADD COLUMN `mothers_name` VARCHAR(50) NOT NULL AFTER `applicant_name`, 
ADD COLUMN `date_of_birth` DATE NOT NULL AFTER `mothers_name`, 
ADD COLUMN `Place_of_birth` VARCHAR(200) NOT NULL AFTER `date_of_birth`, 
ADD COLUMN `sex` enum('1','2') NOT NULL COMMENT '1=M,2=F' AFTER `Place_of_birth`, 
ADD COLUMN `religion` ENUM('0','2') NOT NULL AFTER `sex`, 
ADD COLUMN `profession_ar` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL AFTER `religion`, 
ADD COLUMN `profession` VARCHAR(50) NOT NULL AFTER `profession_ar`;