Чтобы сохранить текущие настройки mysql и отключить ONLY_FULL_GROUP_BY
, я предлагаю посетить ваш phpmyadmin или любой другой клиент, который вы используете, и type:
SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','') copy_me
следующий результат копирования в ваш файл my.ini
.
mint: sudo nano /etc/mysql/my.cnf
ubuntu 16 и вверх: sudo nano /etc/mysql/my.cnf
ubuntu 14-16: /etc/mysql/mysql.conf.d/mysqld.cnf
copy_me
может содержать длинный текст, который по умолчанию может быть обрезан. Убедитесь, что вы скопировали весь текст! старый ответ:
Если вы хотите окончательно отключить ошибку " Выражение #N списка SELECT не находится в предложении GROUP BY и содержит неагрегированный столбец «db.table.COL», который функционально не зависит от столбцов в предложении GROUP BY, это несовместимо с sql_mode = only_full_group_by »выполняет следующие шаги:
sudo nano /etc/mysql/my.cnf
[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
sudo service mysql restart
, чтобы перезагрузить MySQL Это отключит ONLY_FULL_GROUP_BY
для ВСЕХ пользователей
да, %c
распечатает единственный символ:
printf("%c", 'h');
также, putchar
/ putc
будет работать также. От "человека putchar":
#include <stdio.h>
int fputc(int c, FILE *stream);
int putc(int c, FILE *stream);
int putchar(int c);
* fputc() writes the character c, cast to an unsigned char, to stream.
* putc() is equivalent to fputc() except that it may be implemented as a macro which evaluates stream more than once.
* putchar(c); is equivalent to putc(c,stdout).
РЕДАКТИРОВАНИЕ:
Также примечание, что, если у Вас есть строка, для вывода единственного символа, Вы должны получить символ в строке, которую Вы хотите произвести. Например:
const char *h = "hello world";
printf("%c\n", h[4]); /* outputs an 'o' character */
Как упомянуто в одном из других ответов, можно использовать putc (интервал c, ФАЙЛ *поток), putchar (интервал c) или fputc (интервал c, ФАЙЛ *поток) с этой целью.
то, Что важно для примечания, - то, что использование любой из вышеупомянутых функций от некоторых до signicantly быстрее, чем использование любой из анализирующих формат функций как printf.
Используя printf похож на использование пулемета для выпущения одной пули.
Остерегайтесь различия между 'c'
, и "c"
'c'
символ, подходящий для форматирования с %c
"c"
, символ* указывающий на блок памяти с длиной 2 (с пустым разделителем).
char variable = 'x'; // the variable is a char whose value is lowercase x
printf("<%c>", variable); // print it with angle brackets around the character