Проблема внешнего ключа между базами данных, когда база данных содержит значение точки (.)

Я столкнулся с проблемой назначения отношений между базами данных при миграции laravel, потому что имя моей базы данных содержит значение точки (.), Имя моей базы данных = demo.local.com

Schema::table('user_details', function(Blueprint $table)
        {
            $table->foreign('user_id')->references('id')
            ->on('`demo.local.com`.users')
            ->onUpdate('RESTRICT')->onDelete('RESTRICT');
        });

Я использую этот способ, но его ошибка возврата, например

Версия сервера MariaDB для правильного синтаксиса для использования рядом с '.`com```.`users` (`id`) при удалении RESTRICT при обновлении RESTRICT

Итак, можно ли назначить внешний ключ, когда имя базы данных содержит значение точки (.)?


person Mdr Kuchhadiya    schedule 12.05.2021    source источник
comment
Есть ли причина, по которой вы используете точки, а не символы подчеркивания?   -  person thursday_dan    schedule 12.05.2021
comment
Да, я использовал точки, а не символы подчеркивания.   -  person Mdr Kuchhadiya    schedule 12.05.2021
comment
Я это понимаю, но почему ты выбрал точки? Общее мнение состоит в том, чтобы использовать символы подчеркивания, так как это значительно упрощает жизнь, что было бы самым быстрым решением этой проблемы, если только вы не вынуждены использовать точки по какой-либо причине?   -  person thursday_dan    schedule 12.05.2021
comment
У нас уже есть точки в существующих базах данных. Поэтому нам нужно преобразовать их в символы подчеркивания, если они не работают.   -  person Mdr Kuchhadiya    schedule 13.05.2021
comment
Да, это то, что я бы порекомендовал, вы можете использовать имена таблиц с точками, но, насколько я могу судить, laravel не поддерживает это, поэтому вам придется использовать необработанные запросы. Я бы посоветовал переименовать ваши таблицы, чтобы использовать символы подчеркивания вместо точек, и это значительно облегчит жизнь.   -  person thursday_dan    schedule 13.05.2021


Ответы (1)


Я нашел решение, используя необработанный запрос БД, и он работает для меня.

Schema::table('user_details', function(Blueprint $table)
        {
            $table->foreign('user_id')->references('id')
            ->on(\DB::raw('`demo.local.com`.users'))
            ->onUpdate('RESTRICT')->onDelete('RESTRICT');
        });
person Mdr Kuchhadiya    schedule 17.05.2021