Починил систему подсчета количества прочтений постов на блоге
Сегодня спонтанно решил занятся своим сайтом, до которого никак не доходили руки. Заметил, что в колонке справа, где показываются наиболее популярные посты уже у нескольких постов все время стоит ноль просмотров. Такого не может быть, поскольку счетчик Liveinternet'а исправно показывает не менее сотни посетителей в сутки.
Все дело оказалось в зарезервированных словах MySQL. Оказывается, пока мой хостинг использовал более старую версию баз данных MySQL то конструкции с именами полей типа reads отлично работали без кавычек. Но с обновлением на более позднюю версию пятого мускуля начались проблемы с зарезервированными словами, котоыре не взяты в кавычки. Далее Вы можете увидеть зарезервированные слова MySQL, которые используются синтаксическим анализатором yacc:
| Word | Word | Word |
ADD
|
ALL
|
ALTER
|
ANALYZE
|
AND
|
AS
|
ASC
|
ASENSITIVE
|
BEFORE
|
BETWEEN
|
BIGINT
|
BINARY
|
BLOB
|
BOTH
|
BY
|
CALL
|
CASCADE
|
CASE
|
CHANGE
|
CHAR
|
CHARACTER
|
CHECK
|
COLLATE
|
COLUMN
|
CONDITION
|
CONNECTION
|
CONSTRAINT
|
CONTINUE
|
CONVERT
|
CREATE
|
CROSS
|
CURRENT_DATE
|
CURRENT_TIME
|
CURRENT_TIMESTAMP
|
CURRENT_USER
|
CURSOR
|
DATABASE
|
DATABASES
|
DAY_HOUR
|
DAY_MICROSECOND
|
DAY_MINUTE
|
DAY_SECOND
|
DEC
|
DECIMAL
|
DECLARE
|
DEFAULT
|
DELAYED
|
DELETE
|
DESC
|
DESCRIBE
|
DETERMINISTIC
|
DISTINCT
|
DISTINCTROW
|
DIV
|
DOUBLE
|
DROP
|
DUAL
|
EACH
|
ELSE
|
ELSEIF
|
ENCLOSED
|
ESCAPED
|
EXISTS
|
EXIT
|
EXPLAIN
|
FALSE
|
FETCH
|
FLOAT
|
FOR
|
FORCE
|
FOREIGN
|
FROM
|
FULLTEXT
|
GOTO
|
GRANT
|
GROUP
|
HAVING
|
HIGH_PRIORITY
|
HOUR_MICROSECOND
|
HOUR_MINUTE
|
HOUR_SECOND
|
IF
|
IGNORE
|
IN
|
INDEX
|
INFILE
|
INNER
|
INOUT
|
INSENSITIVE
|
INSERT
|
INT
|
INTEGER
|
INTERVAL
|
INTO
|
IS
|
ITERATE
|
JOIN
|
KEY
|
KEYS
|
KILL
|
LEADING
|
LEAVE
|
LEFT
|
LIKE
|
LIMIT
|
LINES
|
LOAD
|
LOCALTIME
|
LOCALTIMESTAMP
|
LOCK
|
LONG
|
LONGBLOB
|
LONGTEXT
|
LOOP
|
LOW_PRIORITY
|
MATCH
|
MEDIUMBLOB
|
MEDIUMINT
|
MEDIUMTEXT
|
MIDDLEINT
|
MINUTE_MICROSECOND
|
MINUTE_SECOND
|
MOD
|
MODIFIES
|
NATURAL
|
NOT
|
NO_WRITE_TO_BINLOG
|
NULL
|
NUMERIC
|
ON
|
OPTIMIZE
|
OPTION
|
OPTIONALLY
|
OR
|
ORDER
|
OUT
|
OUTER
|
OUTFILE
|
PRECISION
|
PRIMARY
|
PROCEDURE
|
PURGE
|
READ
|
READS
|
REAL
|
REFERENCES
|
REGEXP
|
RENAME
|
REPEAT
|
REPLACE
|
REQUIRE
|
RESTRICT
|
RETURN
|
REVOKE
|
RIGHT
|
RLIKE
|
SCHEMA
|
SCHEMAS
|
SECOND_MICROSECOND
|
SELECT
|
SENSITIVE
|
SEPARATOR
|
SET
|
SHOW
|
SMALLINT
|
SONAME
|
SPATIAL
|
SPECIFIC
|
SQL
|
SQLEXCEPTION
|
SQLSTATE
|
SQLWARNING
|
SQL_BIG_RESULT
|
SQL_CALC_FOUND_ROWS
|
SQL_SMALL_RESULT
|
SSL
|
STARTING
|
STRAIGHT_JOIN
|
TABLE
|
TERMINATED
|
THEN
|
TINYBLOB
|
TINYINT
|
TINYTEXT
|
TO
|
TRAILING
|
TRIGGER
|
TRUE
|
UNDO
|
UNION
|
UNIQUE
|
UNLOCK
|
UNSIGNED
|
UPDATE
|
USAGE
|
USE
|
USING
|
UTC_DATE
|
UTC_TIME
|
UTC_TIMESTAMP
|
VALUES
|
VARBINARY
|
VARCHAR
|
VARCHARACTER
|
VARYING
|
WHEN
|
WHERE
|
WHILE
|
WITH
|
WRITE
|
XOR
|
YEAR_MONTH
|
ZEROFILL
|
В принципе, все эти слова можно использовать в качестве назхвания столбцов или таблиц для Ваших баз, однако я бы порекомендовал этого не делать, или использовать эти слова с какими либо префиксами или окончаниями, которые будут определять их принадлежность к Вашим разработкам базы, а не к списку зарезервированных слов MySQL.
Автор: Alexus
Добавить свой комментарий » | Просмотров: 1729 | Рекомендаций у статьи 0. рекомендовать
Постоянная ссылка на статью: http://alexusblog.com/post/Repaired-system-reads-the-number-of-posts-on-the-blog.html
Следующая статья: Принцип работы СВЧ печи (микроволновки)
Предыдущая статья: Скандинавский аукцион: лохотрон или есть стратегии выиграша?
Все статьи в разделе оглавление