gpt4 book ai didi

mysql - 为什么自动增量在 google sql cloud 中不起作用?

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:50 25 4
gpt4 key购买 nike

您好,我正在尝试使用此查询在 google sql cloud 中创建一个表,这里 $email 和 $sid 是根据用户进行的动态变量更改。

    $productcategory="CREATE TABLE IF NOT EXISTS `".$email."`.`".$email."_".$sid."_product_category`(`id` int(20) NOT NULL AUTO_INCREMENT,`addeditems` varchar(25) NOT NULL) ENGINE = InnoDB"; 

q5=mysqli_query($sql,$category);

当我没有在我的 sql 中添加关键字 AUTO_INCREMENT 时创建的这个表,但是在添加 AUTO_INCREMENT 之后我的表没有创建。有人可以帮我吗?

最佳答案

问:为什么 AUTO_INCREMENT 在 google sql cloud 中不起作用?

您真正要问的是,当您在列定义中包含 AUTO_INCREMENT 属性时,为什么 CREATE TABLE 语句没有创建表。

原因是 CREATE TABLE 语句在 google sql cloud 中失败。而且由于同样的原因,它会在所有地方的每个 MySQL 数据库中失败。

MySQL 要求对 AUTO_INCREMENT 列进行索引。通常,AUTO_INCREMENT 列是表的 PRIMARY KEY,或者它上面有一个唯一索引。

这在 MySQL 引用手册中有记录。

Note
There can be only one AUTO_INCREMENT column per table, it must be indexed, and it cannot have a DEFAULT value. ...

当语句试图违反此规则时,MySQL 会返回一个错误。该错误可从 mysqli_error 函数获得。您的代码可以执行条件测试,以检查语句的执行是失败还是成功。如果失败,可以使用 mysqli_error 函数检索错误消息。

另一方面,int(20) 有点奇怪。 INTEGER 类型是一个 4 字节有符号整数。最大值为 2**31-1。转换为十进制,正值需要(最多)10 位数字。最小(最大负数)值需要一个额外的字符作为符号。

INTEGER 列的(可选)长度说明符指定显示长度。它对可以存储的值的范围没有任何影响。奇怪的是显示长度为 20,比可存储的任何值所需的字符多 9 个。

如果您需要支持比 INTEGER 类型更大范围的值的整数类型,您可以使用 BIGINT。这是一个 8 字节的有符号整数。 BIGINT 支持的最大值为 2**63-1。 20 的显示长度对 BIGINT 有意义。

所有整数类型(包括 BIGINT 和 INTEGER)都支持 UNSIGNED 属性,该属性不允许负值。

关于mysql - 为什么自动增量在 google sql cloud 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36809533/

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