Попробуйте это из командной строки. Это сработало для меня, когда я получил такое же сообщение об ошибке на Mac Mojave:
R CMD INSTALL sf_0.7-4.tar.gz --configure-args='-with-gdal-config=/Library/Frameworks/GDAL.framework/Versions/2.4/unix/bin/gdal-config -with-geos-config=/Library/Frameworks/GEOS.framework/Versions/3B/unix/bin/geos-config --with-proj-include=/Library/Frameworks/PROJ.framework/unix/include --with-proj-lib=/Library/Frameworks/PROJ.framework/unix/lib'
Вам нужно будет подтвердить расположение gdal-config, geos-config, include и lib для PROJ. и ваши последние версии для каждой установки и файл .tar.gz. Я нашел похожую проблему и ответ здесь
Если Вы будете собираться быть выполнением этого запроса часто, то Вы захотите создать отдельное поле в таблице с 'отсортированным' именем. Используя регулярные выражения или другие операции лишают возможности MySQL использовать в своих интересах индекс.
Так, самое простое и наиболее эффективное решение состоит в том, чтобы заставить Ваш добавлять a movie_title_short
поле, которое содержит movie_title
без или "A". Обязательно добавьте индекс к movie_title_short
поле также!
Можно использовать функцию замены mysql в избранном пункте...
select replace(movie_title,'The ','') from ... order by replace(movie_title,'The ','')'
Как Carl сказал, я встрою это в его собственное индексируемое поле, чтобы избежать необходимости вычислять его каждый раз. Я рекомендовал бы делать его немного отличающимся способом избежать дублирования все же.
movies (id, name, namePrefix)
например:
| Dark Knight | The |
| Affair To Remember | An |
| Beautiful Mind | A |
Таким образом, можно показать эти фильмы двумя различными способами: "name, namePrefix"
или "namePrefix name"
и может быть отсортирован соответственно.
select right(movie_title, char_length(movie_title)-4) as movie_title
from movies
where left(movie_title,3) = 'the'
union
select movie_title
from movies
Используйте это:
SELECT * FROM movies ORDER BY TRIM(LEADING 'the ' FROM LOWER(`movie_title`));
Я только что столкнулся с этой проблемой ... решение:
SELECT * FROM movies WHERE title REGEXP '^d' AND title NOT REGEXP '^the ' OR title REGEXP '^the d'
это даст вам только результаты, начинающиеся с "D" или "D"