我只是在VM上设置了debian 8.3,并在本教程之后安装了xampp
。一切正常,直到我尝试创建一个新表:
create table testtable
(
id int(10) not null auto_increment,
firstname varchar(255) collate utf8mb4_german2_ci not null,
lastname varchar(255) collate utf8mb4_german2_ci not null,
primary key (id),
unique key (lastname)
)engine = innodb default charset=utf8mb4, collate=utf8mb4_german2_ci
我得到了错误:#1709 - Index column size too large. The maximum column size is 767 bytes.
然后我发现它来自,prefix limitation
它仅限于767Byte,Innodb
可以通过在my.cnf文件中设置innodb_large_prefix来解决此问题。但是我找不到文件,它不在下面/etc/
,也没有/etc/mysql/
-folder,但是my.cnf
我发现的唯一是在中/opt/lampp/etc/
,但是,我将其添加innodb_large_prefix=1
到文件并重新启动了lampp之后。我仍然得到同样的错误。我做错什么了?
编辑 :SELECT version()
返回5.6.14
,因此innodb_large_prefix
应受支持。
edit2 :我知道我可以通过仅将部分密钥设置为索引来获得低于767Byte的方法来解决此问题。但是我想在这里知道如何正确配置mysql。
在5.6.3和5.7.7之间(也就是说,如果您正在运行MySQL 5.6或MariaDB 10.0),有4个步骤:
注意
SELECT * FROM information_schema.INNODB_SYS_TABLESPACES;
将提供file_format和row_format。其他一些I_S表提供了file_per_table的线索。
问题内容: 我一直试图重置我的MySQL根密码。我已经运行了mysqld_safe –skip-grant- tables,更新了根密码,并检查了用户表以确保它在那里。重新启动mysql守护程序后,我尝试使用刚刚设置的新root密码登录,但仍然由于用户“ root”错误而拒绝访问。我也尝试过完全删除并重新安装mysql(包括删除my.cnf文件),但还是没有运气。有人对我下一步的工作有什么建议吗?
问题内容: 我试图在事实发生后修改表使其成为主键列。我尝试了以下SQL,但收到语法错误通知。 我做错什么了吗? 问题答案:
问题内容: 我有一个名为test的mySQL表: 我想将locationExpect列更改为: 如何快速完成? 问题答案: 创建表后是要更改表吗?如果是这样,则需要使用alter table ,尤其是: 例如
问题内容: 我已经在redhat linux上安装了MySQL服务器5。我无法以root用户身份登录,因此无法更改root用户密码。 当我尝试像这样设置一个时: 我收到一个错误: 好像设置了root密码。 我也尝试过使用(此处描述)重置密码。 然后制作: 我什至卸载了mysql-server(使用yum),然后重新安装了它,但这没有帮助。 如何强制重置root密码? 问题答案: 我删除了MySQL
问题内容: 我正在使用mysql和mysql工作台。我用innodb引擎创建了5个表。我检查了他们的引擎,然后才将数据插入到innodb中。我从5个MyISAM表中插入了数据,现在我的innodb表是MyISAM。我不能改变他们。我使用了alter table engine = innodb,但是它不起作用。 问题答案: 从手册中:http : //dev.mysql.com/doc/refman
问题内容: 根据以下我用于常规mysql的代码,如何将其转换为使用mysqli? 像更改为一样简单吗? 问题答案: 首先要做的可能是将每个函数调用都替换为等效函数,至少在您愿意使用过程式API的情况下-考虑到您已经有一些基于MySQL API的代码,这将是更简单的方法是一种程序性的。 为了解决这个问题,“ MySQLi扩展功能摘要” 绝对是有用的。 例如: 将被替换 将被替换为和/或,具体取决于上