php で動く http://sitebar.org/requirements.php というプログラムがあるのですが、
mysql databaseのtableに、レコードを追加するところで、
Invalid query: 1978: Incorrect default value '0000-00-00 00:00:00' for column 'changed' INSERT INTO sitebar_link (name, url, favicon, target, private, is_feed, comment, validate, added, nid) VALUES ('Google', 'https://www.google.co.jp/', '', '', 0, 0, '', 1, now() , 2)
になってしまうのです。
対応 tableは、下記になり、
yama@jpx20120007:~$ sudo mysql mysql [sudo] yama のパスワード: MariaDB [mysql]> use sitebar; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A MariaDB [sitebar]> describe sitebar_link ; +------------+------------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+------------------+------+-----+---------------------+----------------+ | lid | int(10) unsigned | NO | PRI | NULL | auto_increment | | nid | int(10) unsigned | NO | MUL | 0 | | | url | text | NO | | NULL | | | name | varchar(255) | NO | | | | | private | tinyint(1) | YES | | 0 | | | comment | longtext | YES | | NULL | | | favicon | text | YES | | NULL | | | added | datetime | NO | | CURRENT_TIMESTAMP | | | changed | datetime | NO | | 0000-00-00 00:00:00 | | | visited | datetime | NO | | 0000-00-00 00:00:00 | | | tested | datetime | NO | | 0000-00-00 00:00:00 | | | deleted_by | int(10) unsigned | YES | | NULL | | | is_dead | tinyint(1) | NO | | 0 | | | is_feed | tinyint(1) | NO | | 0 | | | is_sidebar | tinyint(1) | NO | | 0 | | | hits | int(10) unsigned | NO | | 0 | | | validate | tinyint(1) | NO | | 1 | | | target | varchar(32) | YES | | NULL | | | type | varchar(10) | YES | | | | +------------+------------------+------+-----+---------------------+----------------+ 19 rows in set (0.00 sec)
エラーメッセージより、
| changed | datetime | NO | | 0000-00-00 00:00:00 | |
の Field 'changed' の初期値を CURRENT_TIMESTAMP に変更すれば、解消されるかもと思い...
MariaDB [sitebar]> alter table 'sitebar_link' ALTER 'changed' SET DEFAULT CURRENT_TIMESTAMP; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''sitebar_link' ALTER 'changed' SET DEFAULT CURRENT_TIMESTAMP' at line 1
となってしまいます。
何か対処方法があれば、御教示をお願いします。
sitebar_link テーブルのCREATE文を提示いただけますか?
再現確認と調整を行いたいです。
mts10806さん、サポートありがとうございます。
事情が複雑なのですが、
旧サーバマシン、sitebar (ver. 3.3.9)で、
sitebar自身が作成した、sitebar_link テーブルは、
ソースより、下記になります。
CREATE TABLE `sitebar_link` (
`lid` int(10) unsigned NOT NULL auto_increment,
`nid` int(10) unsigned NOT NULL default '0',
`url` text NOT NULL,
`name` varchar(255) NOT NULL default '',
`private` tinyint(1) default '0',
`comment` longtext,
`favicon` text,
`added` datetime NOT NULL default '0000-00-00 00:00:00',
`changed` datetime NOT NULL default '0000-00-00 00:00:00',
`visited` datetime NOT NULL default '0000-00-00 00:00:00',
`tested` datetime NOT NULL default '0000-00-00 00:00:00',
`deleted_by` int(10) unsigned default NULL,
`is_dead` tinyint(1) NOT NULL default '0',
`is_feed` tinyint(1) NOT NULL default '0',
`is_sidebar` tinyint(1) NOT NULL default '0',
`hits` int(10) unsigned NOT NULL default '0',
`validate` tinyint(1) NOT NULL default '1',
`target` varchar(32),
`type` varchar(10) DEFAULT '',
PRIMARY KEY (`lid`),
UNIQUE KEY `name` (`nid`,`name`)
)
今回、
新サーバマシンで、sitebar (ver. 3.4)に更新し
「旧データベース」を、そのまま、importしています。
ちなみに、sitebar (ver. 3.4)の、sitebar_link テーブルは、
create文は、ソースより、下記になります。
CREATE TABLE `sitebar_link` (
`lid` int(10) unsigned NOT NULL auto_increment,
`nid` int(10) unsigned NOT NULL default '0',
`url` text NOT NULL,
`name` varchar(255) NOT NULL default '',
`private` tinyint(1) default '0',
`comment` longtext,
`favicon` text,
`added` datetime NOT NULL default CURRENT_TIMESTAMP,
`changed` datetime,
`visited` datetime,
`tested` datetime,
`deleted_by` int(10) unsigned default NULL,
`is_dead` tinyint(1) NOT NULL default '0',
`is_feed` tinyint(1) NOT NULL default '0',
`is_sidebar` tinyint(1) NOT NULL default '0',
`hits` int(10) unsigned NOT NULL default '0',
`validate` tinyint(1) NOT NULL default '1',
`target` varchar(32),
`type` varchar(10) DEFAULT '',
PRIMARY KEY (`lid`),
UNIQUE KEY `name` (`nid`,`name`)
)
質問は編集できるので追記いただければと。
ただ、別でコメントしましたが、SyntaxはMySQLの仕様っぽいですね。
一寸分からなくなってきました。そもそも、
Invalid query: 1978: Incorrect default value '0000-00-00 00:00:00' for column 'changed'
のエラーは、sitebar (ver. 3.4)に対して行った結果ですか?
sazi さん、
>Invalid query: 1978: Incorrect default value '0000-00-00 00:00:00' for column 'changed'
>のエラーは、sitebar (ver. 3.4)に対して行った結果ですか?
旧サーバーマシン
sitebar (ver. 3.3.9)
mysql database: sitebar
新サーバーマシン
sitebar (ver. 3.4)
mysql database: 旧サーバーマシンのdatabase sitebarを sudo mysql -u root -p sitebar < sitebar.sql でインポート
新サーバーマシンの、sitebarへアクセスし、url追加すると、
Incorrect default value '0000-00-00 00:00:00' for column 'changed'
が表示され、追加できない。
です。
sitebar (ver. 3.4)のcreate文は適用していないという事ですね。
sazi さん、
> sitebar (ver. 3.4)のcreate文は適用していないという事ですね。
はい、そうです。
sitebar 3.4 になって、table sitebar_link (ver. 3.3.9で使用していた)に、
url を新規に追加する際、tableのNullとDefaultの扱い方が、微妙に
異なり、さらに、mysql の version の差もあり、状況が複雑になっている
ようです。
sitebar ver. 3.3.9の 過去のデータを利用したかったので、こんな事になってしまいました。
回答2件
あなたの回答
tips
プレビュー