CyberDeck / devise-fido-u2f

A devise module to authenticate additionally with a FIDO U2F hardware token, e.g. a Yubico USB security key.
MIT License
35 stars 4 forks source link

Migration script is failing with MySQL #3

Closed zedtux closed 6 years ago

zedtux commented 6 years ago

After having run the generator, I'm running the migration scripts by it fails with the following:

== 20171221075034 CreateFidoUsfDevices: migrating =============================
-- create_table(:fido_usf_devices)
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: BLOB, TEXT, GEOMETRY or JSON column 'public_key' can't have a default value: CREATE TABLE `fido_usf_devices` (`id` int(11) auto_increment PRIMARY KEY, `user_id` int(11) NOT NULL, `user_type` varchar(255) NOT NULL, `name` varchar(255) DEFAULT '' NOT NULL, `key_handle` varchar(255) DEFAULT '' NOT NULL, `public_key` blob(10240) DEFAULT x'' NOT NULL, `certificate` blob(1048576) DEFAULT x'' NOT NULL, `counter` int(11) DEFAULT 0 NOT NULL, `last_authenticated_at` datetime NOT NULL, `created_at` datetime, `updated_at` datetime,  INDEX `index_fido_usf_devices_on_user_type_and_user_id`  (`user_type`, `user_id`) ) ENGINE=InnoDB/bundle/gems/activerecord-4.2.2/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:299:in `query'
/bundle/gems/activerecord-4.2.2/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:299:in `block in execute'
/bundle/gems/activerecord-4.2.2/lib/active_record/connection_adapters/abstract_adapter.rb:473:in `block in log'
/bundle/gems/activesupport-4.2.2/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/bundle/gems/activerecord-4.2.2/lib/active_record/connection_adapters/abstract_adapter.rb:467:in `log'
/bundle/gems/activerecord-4.2.2/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:299:in `execute'
/bundle/gems/activerecord-4.2.2/lib/active_record/connection_adapters/mysql2_adapter.rb:231:in `execute'
/bundle/gems/activerecord-4.2.2/lib/active_record/connection_adapters/abstract/schema_statements.rb:208:in `create_table'
/bundle/gems/activerecord-4.2.2/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:462:in `create_table'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:662:in `block in method_missing'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:632:in `block in say_with_time'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:632:in `say_with_time'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:652:in `method_missing'
/application/db/migrate/20171221075034_create_fido_usf_devices.rb:3:in `change'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:606:in `exec_migration'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:590:in `block (2 levels) in migrate'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:589:in `block in migrate'
/bundle/gems/activerecord-4.2.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:292:in `with_connection'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:588:in `migrate'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:765:in `migrate'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:995:in `block in execute_migration_in_transaction'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:1043:in `ddl_transaction'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:994:in `execute_migration_in_transaction'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:956:in `block in migrate'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:952:in `each'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:952:in `migrate'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:820:in `up'
/bundle/gems/activerecord-4.2.2/lib/active_record/migration.rb:798:in `migrate'
/bundle/gems/activerecord-4.2.2/lib/active_record/tasks/database_tasks.rb:137:in `migrate'
/bundle/gems/activerecord-4.2.2/lib/active_record/railties/databases.rake:44:in `block (2 levels) in <top (required)>'
/usr/local/bundle/bin/bundle:104:in `load'
/usr/local/bundle/bin/bundle:104:in `<main>'

Removing the default: '' from the script make it working fine.

zedtux commented 6 years ago

I will open a PR in order to fix this issue.

CyberDeck commented 6 years ago

Thank you for reporting this bug and for providing a PR in the future.

I assume that the default: '' has to be removed for both, public_key and certificate?

zedtux commented 6 years ago

You guessed it right @CyberDeck