mysql - SQL - 'char' auto_increment 问题

标签 mysql sql syntax

我目前正在尝试使用 SQL 文件将表添加到 phpMyAdmin 中的数据库,然后用数据填充它。我已经在很多场合成功地做到了这一点,但我遇到了一个严重的问题,无论我尝试什么,我都找不到解决方案。以前我使用“int”作为主键类型,但现在必须使用“char”作为主键类型。这似乎就是问题的根源。我在网上查看并尝试了几种解决方案,但结果都不同。所有结果都等于失败。

我在下面展示了我的原始代码,该代码失败了,导致我也在网上寻找解决方案,但也无济于事。

--
-- Table structure for table `practice`
--

CREATE TABLE `practice` (
`practice_Id` char(2) NOT NULL auto_increment,
`Practice_Name` varchar(20) NOT NULL,
`Practice_Address` varchar(50) NOT NULL,
PRIMARY KEY (`practice_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Dumping data for table `practice`
--

INSERT INTO `practice` VALUES(P1, 'Practice Head Office', '27, The Hill, Glasgow');
INSERT INTO `practice` VALUES(P2, 'Practice Unit 1', 'Unit 1, Houston Estate, Glasgow');

当我尝试将此文件导入到我的数据库时,我收到以下响应:

#1063 - Incorrect column specifier for column 'practice_Id' 

现在我在这个网站上找到了解决方案。只需将 unsigned 添加到 auto_increment 中,它就应该像 auto_increment 适用于整数和 float 一样工作。我将其添加到文件中,然后尝试再次导入它。这再次失败,给我带来了更多错误,如下所示:

#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 'unsigned auto_increment,
`Practice_Name` varchar(20) NOT NULL,
`Practice_Add' at line 6  

我尝试单独使用 unsigned 忽略 auto_increment,但得到了与上面相同的结果。

我真的需要帮助,因为这似乎不可能通过。没有语法错误,所以没有意义。有任何问题尽管问,但我已将我的尝试和我找到的所有解决方案放在上面。我还有其他存在此问题的 sql 文件,所以这对我和我的上一份工作来说确实是一个巨大的障碍。

最佳答案

不可能通过。自动增量仅适用于数字字段。从语义上讲,“递增”字符串是没有意义的。是的,你可以说

'x' + 1 = 'y'

对于单个字符,但是如何增加一个字符字符串?你会如何评估

"Bob" + 3

例如?

关于mysql - SQL - 'char' auto_increment 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37777918/

相关文章:

php - 我将如何构建这个数据库?

mysql - 如何在 Node js 中重新启动 mqtt 订阅者

mysql - 对数据库记录使用唯一的日期时间或时间戳是个坏主意吗?

mysql - 按日期时间字段准确分页

java - 从复杂的 SQL 查询构建 CriteriaQuery

sql - sql server单行多列成一列

python - Python 正则表达式中的 "(?<!…)"符号是什么意思?

javascript - JavaScript 中的 "=>"(由等于和大于组成的箭头)是什么意思?

python - 我的 JSON 对象有什么问题?

mysql - 子表总和别名错误