gpt4 book ai didi

php - MySQL CREATE 产生冗余索引

转载 作者:太空宇宙 更新时间:2023-11-03 12:03:46 24 4
gpt4 key购买 nike

当使用以下代码创建新的数据库表时,phpMyAdmin 会报告冗余索引,如 this post 中所述。 .有没有办法避免这种行为并且在创建表时只生成一个索引?我可以使用 ALTER TABLE mytest DROP INDEX id; 删除第二个索引,但也许有更优雅的解决方案?

<?php
$sql = "CREATE TABLE IF NOT EXISTS `mytest` (
`id` SERIAL PRIMARY KEY,
`mytext` TEXT
) CHARSET=utf8";
mysqli_query($mysqli, $sql);

$sql = "SHOW INDEX FROM `mytest`";
if ($res = mysqli_query($mysqli, $sql)) {
while ($ds = mysqli_fetch_array($res)) {
echo "<pre>";
print_r($ds);
echo "</pre>";
}
} else echo mysqli_error($mysqli);
?>

最佳答案

根据文档:

SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.

因此,您的声明是:

id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY

因此,您将获得 UNIQUE 的索引和 PRIMARY KEY 的索引。

简单的解决方案是不使用“缩写”并清楚你想要什么:

id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY

关于php - MySQL CREATE 产生冗余索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27657798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com