В MySQL есть два типа кавычек:
'
для включения строковых литералов `
для включения идентификаторов, таких как имена таблиц и столбцов И тогда есть "
, который является частным случаем. Он может быть использован для one вышеупомянутых целей за раз в зависимости от сервера MySQL sql_mode
:
"
может использоваться для вложения строковых литералов точно так же, как '
ANSI_QUOTES
символ "
может использоваться для заключите идентификаторы так же, как `
SELECT "column" FROM table WHERE foo = "bar"
Запрос будет выбирать строковый литерал "column"
, где column foo
равен строке "bar"
В запросе будет выбран столбец column
где столбец foo
равен столбцу bar
"
, чтобы ваш код не зависел от SQL mode Ответ в этой строке вывода readelf -a
в исходном вопросе
[Requesting program interpreter: /lib/ld-linux.so.2]
Мне не было файла /lib/ld-linux.so.2, который необходим для запускать 32-разрядные приложения. Пакет Ubuntu с этим файлом - libc6-i386.
Ну, другой возможной причиной этого может быть простой разрыв строки в конце каждой строки и линии shebang. Если вы кодировали в Windows IDE, то возможно, что окна добавили свой собственный разрыв строки в конце каждой строки и при попытке для запуска его на Linux проблемы с разрывом строки
Эта ошибка возникает при попытке выполнить 32-разрядную сборку на 64-разрядной версии Linux.
Также сравните то, что file
должно было сказать в двоичном коде, который вы пытались (т. е. 32-битный), с тем, что вы получаете за свой /bin/gzip
:
$ file /bin/gzip
/bin/gzip: ELF 64-bit LSB executable, x64-64, version 1 (SYSV), \
dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
, который что я получаю на Ubuntu 9.10 для amd64 aka x86_64.
Редактировать : Ваше расширенное сообщение показывает, что, поскольку вывод readelf
также отражает 32-битную сборку.
Я думаю, что у вас установлена x86-64, у меня нет компоновщика времени выполнения i386. Вероятно, ENOENT связан с тем, что ОС ищет что-то вроде /lib/ld.so.1 или аналогичного. Обычно это часть 32-разрядной версии glibc, и пока я не знаком с Ubuntu, я бы предположил, что у них есть какой-то 32-разрядный пакет совместимости для установки. К счастью, gzip зависит только от библиотеки C, поэтому, вероятно, все, что вам нужно будет установить.
Возможно, что исполняемый файл статически связан, и поэтому ldd gzip
не видит ссылок, потому что это не так. Я не очень много знаю о вещах, которые далеки назад, поэтому я не знаю, будут ли несовместимы, если библиотеки связаны статически. Я мог бы ожидать, что это будет.
Я знаю, что это самое очевидное, и я уверен, что вы это сделали, но chmod +x ./gzip
, да? Такой файл или каталог не является классическим симптомом того, что это не делается, поэтому я упоминаю об этом.
У меня также были проблемы, потому что мой программный интерпретатор был /lib/ld-linux.so.2, однако он был на встроенном устройстве, поэтому я решил проблему, попросив gcc использовать ls-uClibc вместо этого следующим образом:
-Wl,--dynamic-linker=/lib/ld-uClibc.so.0