我复制了一个带有安装Debian、Nginx、PhpMyAdmin的vagrant box的项目。。在新项目中,Laravel的php artisan migrate
不再工作,我得到了错误:
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1709 Index column size too large. The maximum column size is 767 bytes. (SQL: alter table `courses` add unique `courses_name_unique`(`na
me`))
当我做一个转储(结构数据)的工作项目数据库,并将其导入到数据库中,给出了迁移的错误,然后一切正常,它创建了所有的表和数据被导入。.
如何修复大小以便运行迁移方法?
三种解决方案,每种都有缺点:
>
VARCHAR(255)
通常var比必要的要大。如果您可以安全地缩小到191或更小,错误就会消失。
如果您不需要中文或表情符号,请切换到utf8(从utf8mb4)。
对于mariadb,使用以下配置更新您的*my.cnf
文件,
innodb_default_row_format=dynamic
innodb_file_format=barracuda
innodb_file_per_table=true
innodb_large_prefix=true
然后,您必须重新启动mariadb
服务,更新的配置才能生效。
正如您在错误消息中看到的——“最大列大小为767字节”,如果您想在其上创建索引。VARCHAR(255)
列使用utf8
最多可占用765(255*3)字节,使用utf8mb4
最多可占用1020(255*4)字节。这是因为在MySQL中,utf8最多占用3个字节,而utf8mb4最多占用4个字节(真正的utf8)。因此,使用utf8mb4
创建VARCHAR(255)
(唯一)索引将失败。
以下是解决问题的选项:
在my.ini
中设置默认排序规则:
collation_server=utf8_unicode_ci
character_set_server=utf8
在创建时为数据库设置默认归类:
CREATE DATABASE IF NOT EXISTS `your_db` COLLATE 'utf8_unicode_ci'
为表/列设置默认排序规则。(我不建议那样)
将列大小更改为190(varchar(190)
)或更小。
Mysql服务器配置被Laravel的migration命令覆盖。它会将排序规则和字符集设置为配置的版本。
在config/database.php
中的数据库配置文件中,更改数据库引擎的charset
和排序规则
字段。
..
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
//'charset' => 'utf8mb4',
//'collation' => 'utf8mb4_unicode_ci',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
..
问题内容: 我用一个无用的盒子复制了一个项目,该项目安装了Debian,Nginx,PhpMyAdmin等。在新项目中,Laravel 不再起作用,并且出现错误: 当我对工作中的项目数据库进行转储(结构+数据)并将其导入数据库中时,如果存在迁移错误,则一切正常,它将创建所有表并导入数据。 如何固定大小以便可以运行migration方法? 问题答案: 如您在错误消息中所看到的- 如果要在其上创建索引
我试图迭代元素,在这里我必须为每个元素获取文本体,但在打印第一个元素体之后,下一个元素体我将获得“java.lang.IndexOutOfBoundsException:Index:1,Size:1”。我知道这是非常简单的修复,但我无法修复它。请帮助我解决此问题。 在下面的代码中,当“String text=KpiText.get(i).getText();”第二次打印时出现“java.lang.
问题内容: 我想确定索引的大小,它们是主键索引。这碰巧是在mysql集群上,但我认为这并不重要。 问题答案: 我认为这就是您要寻找的。 http://dev.mysql.com/doc/refman/5.1/zh-CN/show-table- status.html
问题内容: 我创建了一个表格,并意外地将length 改为。我该如何解决? 一个例子将不胜感激。 问题答案: 你有尝试过吗? 这会将 col_name 的类型更改为
问题内容: 我正在尝试制作一个Java桌面应用程序,其中我要使用多个应用程序,我要设置的固定高度和宽度。我该如何实现? 这是我的代码 当我减少文本大小或文本 ,然后尺寸缩小但我想,当我减少或消除任何文字,但JLabel的大小不应该减少它应该修复 我怎么能得到这个? 提前致谢 问题答案: 您可以通过设置最小,首选和最大大小来设置固定大小: 当链接从 MadProgrammer ,你需要重写这些方法,
尝试打印包含 698 个项目的 ArrayList 时收到以下错误: 我使用了以下代码,我希望收到错误: 我的问题是,如果数组的大小是698,那么max索引不应该是697吗?我不明白为什么错误给出指数:698。