我有一个主键是一个varchar(255)的表.出现了一些情况,其中255个字符是不够的.我尝试将字段更改为文本,但是我收到以下错误:
BLOB/TEXT column 'message_id' used in key specification without a key length
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
编辑:我还应该指出这个表有一个包含多列的复合主键.
我有这样一张桌子:
CREATE TABLE `products` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(512) NOT NULL,
`description` text,
PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
和这样的一个:
CREATE TABLE `product_variants` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`product_id` int(11) unsigned NOT NULL,
`product_code` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `product_code` (`product_code`),
KEY `product_variant_product_fk` (`product_id`),
CONSTRAINT `product_variant_product_fk` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1037 DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
和这样的SQL语句
SELECT p.id AS id, p.name AS name, p.description AS description, pv.id …Run Code Online (Sandbox Code Playgroud) 我正在使用sequelize ORM和mySQL数据库.
我有一个属性类型为TEXT的模型:
description: {
type: Sequelize.TEXT,
unique: true
},
Run Code Online (Sandbox Code Playgroud)
当我尝试为相应的模型创建表时,它给出一条错误消息:
未处理的拒绝SequelizeDatabaseError:ER_BLOB_KEY_WITHOUT_LENGTH:BLOB/TEXT列'描述'用于密钥规范而没有密钥长度
当与postgreSQL一起使用时,这很好用.我能想到的这个错误的可能原因可能是mySQL不支持TEXT数据类型,因此,我必须将其指定为LONGTEXT.
如果我的想法正确或有其他原因,如果有人可以提供帮助.
我正在为自己创建一个数据库,我有一个注册表格,要求人们提供他们的姓名,密码,电子邮件,手机,年龄和位置.希望它会像约会网站一样.
到目前为止我有(对于我的数据库)
create table members(
user VARCHAR(16),
password VARCHAR(16),
email VARCHAR(320),
mobile VARCHAR(15),
age INT(3)
#location ???
INDEX(user(6));
)
Run Code Online (Sandbox Code Playgroud)
编辑 忘了问这个问题
应该使用什么数据类型location,数据库看起来足够安全吗?
位置是按国家/地区,并通过下拉菜单选择.