【发布时间】:2014-11-04 11:01:55
【问题描述】:
今天我在 mysql 表中插入了一行,但发生了一些奇怪的事情,因为最后添加的主 ID 较高的行位于其他一些 id 较低的行之前,而在其他一些 id 较低的行之后,如下所示:
+---------+
| user_id |
+---------+
| 1 |
| 50 |
| 69 | <=== Wrong place
| 63 |
+---------+
这就是它在 phpmyadmin 和我的 php 脚本中的列出方式。我知道如果我没有在我的 php 脚本中定义列出行的顺序但是在 phpmyadmin 中我不知道为什么会发生这种情况。顺便说一句,这是我第一次看到这样的东西。
这是查询的结果:SHOW CREATE TABLE mytable
CREATE TABLE `users` (
`user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'auto incrementing user_id of each user,
unique index', `web_id` varchar(166) COLLATE utf8_unicode_ci NOT NULL,
`user_name` varchar(64) COLLATE utf8_unicode_ci NOT NULL COMMENT 'user''s name',
`user_password_hash` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'user''s password in salted and hashed format',
`user_email` varchar(64) COLLATE utf8_unicode_ci NOT NULL COMMENT 'user''s email',
`domain` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`address` varchar(166) COLLATE utf8_unicode_ci NOT NULL,
`billing_firstname` varchar(166) COLLATE utf8_unicode_ci NOT NULL,
`billing_lastname` varchar(166) COLLATE utf8_unicode_ci NOT NULL,
`billing_phone` varchar(90) COLLATE utf8_unicode_ci NOT NULL,
`billing_country` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`git_auto_update` enum('Y','N') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',
`server_id` int(16) NOT NULL,
`trial` enum('0','1') COLLATE utf8_unicode_ci NOT NULL,
`purchase_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`user_id`),
UNIQUE KEY `user_name` (`user_name`)
) ENGINE=MyISAM AUTO_INCREMENT=39 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='user data'
【问题讨论】:
-
请运行
SHOW CREATE TABLE mytable\G 并运行SELECT * FROM mytable并发布两者的输出。 -
请阅读MY POST,了解如何正确提问...它将帮助您获得适当的答案
-
在表中插入行的顺序也无关紧要。当您运行 SELECT 语句时,只需使用 ORDER BY 来确保它的顺序就像您应该做的那样。并且 PRIMARY id 应该自动递增,不知道你为什么要自己指定它。
-
@RolandoMySQLDBA 查看问题 thnx 中 SHOW CREATE TABLE 的结果
-
@JohnRuddell 尽管这不是恐慌的情况,但是当我看到这个的那一刻我很困惑,所以我很快就写下了我的问题
标签: mysql phpmyadmin