Указанный ключ был слишком длинным во время миграции - PullRequest
0 голосов
/ 19 апреля 2020
class CreateUsers < ActiveRecord::Migration[6.0]
  def change
    create_table :users do |t|
      t.string :user

      t.timestamps
    end
  end
end

class CreateArticles < ActiveRecord::Migration[6.0]
  def change
    create_table :articles do |t|
      t.string :content


      t.timestamps
    end
  end
end

Я создал эти две сущности в новом проекте, и когда я запускаю миграцию, я получаю эту ошибку:

rails db:setup
Created database 'rails_api_development'
Created database 'rails_api_test'
C:/Users/admin/Desktop/projects/rails-api/db/schema.rb doesn't exist yet. Run `rails db:migrate` to create it, then try again. If you do not intend to use a database, you should instead alter C:/Users/admin/Desktop/projects/rails-api/config/application.rb to limit the frameworks that will be loaded.

admin@Desktop MINGW32 ~/Desktop/projects/rails-api (master)
$ rails db:migrate
rails aborted!
ActiveRecord::StatementInvalid: Mysql2::Error: Specified key was too long; max key length is 1000 bytes
bin/rails:4:in `require'
bin/rails:4:in `<main>'

Caused by:
Mysql2::Error: Specified key was too long; max key length is 1000 bytes
bin/rails:4:in `require'
bin/rails:4:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

Кроме того, почему он говорит mysql2, хотя я ввел mysql как база данных? Какого черта не так с рельсами? Это проблема с ORM или другие проблемы с конфигурацией?

1 Ответ

0 голосов
/ 19 апреля 2020

SET GLOBAL default_storage_engine = 'InnoDB';

Выполнение этого в phpmyadmin решило эту проблему. Кажется, проблема с MySQL базой данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...