I can not create foreign secrets with ON DELETE SET DEFAULT, but when i personally use ON DELETE CASCADE then all works here's my sql

CREATE TABLE person(  
    customer_id INT AUTO_INCREMENT PRIMARY KEY,  
    name VARCHAR(100) UNIQUE 
);


CREATE TABLE habits(  
    customer_id INT AUTO_INCREMENT PRIMARY KEY,  
    habit VARCHAR(100) UNIQUE 
);

INSERT INTO `test`.`habits` (`customer_id`, `habit`) VALUES (NULL, 'smoking'), (NULL, 'drinking');
INSERT INTO `test`.`person` (`customer_id`, `name`) VALUES (NULL, 'John'), (NULL, 'Steve');

CREATE TABLE foreigner(  
    customer_id INT AUTO_INCREMENT PRIMARY KEY,  
    customer VARCHAR(100) DEFAULT 'John', 
    habbit  VARCHAR(100) DEFAULT 'smoking', 
    FOREIGN KEY (customer) REFERENCES person(name)  ON DELETE SET DEFAULT ON UPDATE CASCADE,
    FOREIGN KEY (habbit) REFERENCES habits(habit)  ON DELETE SET DEFAULT ON UPDATE CASCADE     
);

It's strange it works basically use ON DELETE CASCADE.... any ideas?

In the MySQL Reference Manual...

SET DEFAULT: This course of action is identified by the parser, but InnoDB rejects table definitions that contains ON Remove SET DEFAULT or ON UPDATE SET DEFAULT clauses.

You could attempt SET NULL, but I am unsure in the event that may cause you other issues rather.