我正在尝试在phpMyAdmin中创建一个表,无论我如何操作SQL代码,我都会遇到同样的错误。这是phpMyAdmin生成的预览SQL
CREATE TABLE `puppies`.`animals` (
`id` INT(11) NOT NULL AUTO_INCREMENT ,
`puppy_name` VARCHAR(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`breed_id` INT(11) NOT NULL ,
`description` VARCHAR(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`price` DECIMAL(10,2) NOT NULL ,
`picture_url` VARCHAR(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`sold` TINYINT(1) NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;
我用括号和逗号的多种变体尝试了它。
答案 0 :(得分:9)
对于那些仍在经历这种情况的人,并且不想等待它再次随机工作:
我刚遇到这个,除了一些bug之外找不到任何解释。
我试过了:
CREATE TABLE `database`.`measurement_types` (
`TypeID` INT(2) NOT NULL AUTO_INCREMENT ,
`Name` VARCHAR(32) NOT NULL ,
`Description` VARCHAR(256) NOT NULL ,
PRIMARY KEY (`TypeID`)) ENGINE = InnoDB;
哪个产生相同"请输入有效长度"错误
尝试了几次不同的长度值,但仍然遇到同样的错误。
- 解 -
所以我先创建一个包含一列的表,然后用另外两列修改它,如下所示:
CREATE TABLE `database`.`measurement_types` (
`TypeID` INT(2) NOT NULL AUTO_INCREMENT ,
PRIMARY KEY (`TypeID`)) ENGINE = InnoDB;
然后:
ALTER TABLE `measurement_types`
ADD `Name` VARCHAR(32) NOT NULL AFTER `TypeID`,
ADD `Description` VARCHAR(256) NOT NULL AFTER `Name`;
这很有效。
我还尝试删除该表并再次使用第一个SQL创建它,这次它起作用了。似乎很随意
答案 1 :(得分:2)
我遇到了同样的问题,似乎是VARCHAR字段的错误。我的解决方案是将这些字段设置为INT,创建表,然后将其更改回VARCHAR
答案 2 :(得分:1)
我也遇到了同样的问题,我点击了预览SQL 并复制了该SQL查询并将其粘贴到SQL Run中
答案 3 :(得分:0)
我通过输入不是动态内存分配类型的数据类型的长度值来解决“请输入有效长度”的问题。因此,他们显然需要知道可以为存储使用多少内存。或者一定是有效长度
答案 4 :(得分:0)
您也可以通过重新启动mysql来解决它。它对我有用。
答案 5 :(得分:0)
如果使用Varchar
,则必须指定长度。否则,它将无法保存。
答案 6 :(得分:0)
我的学生正在使用XAMPP;并且大约25%的班级经历了这种随机错误。所有字段都是正确的,并且具有长度值。很难找到任何模式。重新启动MySQL仅对一名学生有效,而对其余学生则无效。尝试使用另一种浏览器仅对一个学生有效,而对其他学生则无效。重新启动浏览器仅对一名学生有效,而对其余学生无效。基本上,这似乎是随机的,并且任何“修复”都可以是“这次随机起作用”,而与事件的任何变化无关。
答案 7 :(得分:0)
这是varchar的错误。如果您将排序规则更改为utf8mb4_general_ci
,它将解决此问题
答案 8 :(得分:0)
PhpMyAdmin 似乎存在一些问题。 如果列类型为 varchar,则需要“排序规则”值。如果 varchar 的 Collation 字段为空,您将遇到错误“请输入有效长度”。所以基本上'Size'和'Collation'这两个字段都是必填的,不能为空。
请将 Collation 字段设置为诸如“utf8mb4_general_ci”之类的值以解决问题。
答案 9 :(得分:0)
我解决了“请输入有效长度”的问题,方法是分别添加一列并为所有列指定长度,因为数据库需要知道它将消耗多少内存。
答案 10 :(得分:-1)
我的解决方案是为每个 varchar 类型设置一个值。